[FRUDIS - VERSAMENTO MERCE]

- versamento merce su linea di produzione
This commit is contained in:
Valerio Castellana 2020-01-03 15:20:18 +01:00
parent 315bc48b6b
commit fd2f8edf40
14 changed files with 410 additions and 440 deletions

View File

@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services'
android { android {
def appVersionCode = 116 def appVersionCode = 117
def appVersionName = '1.10.13' def appVersionName = '1.10.14'
signingConfigs { signingConfigs {
release { release {

View File

@ -2,20 +2,21 @@ package it.integry.integrywmsnative.core.model;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import java.util.List;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableFloat; import it.integry.integrywmsnative.core.di.BindableFloat;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsItemModel; import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel;
import it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list.DialogChooseOrdsLavFromListItemModel;
public class CheckableOrdineLavoro { public class CheckableOrdineLavoro {
private DialogChooseOrdsLavFromListItemModel item; private ChooseOrdsLavFromListItemModel item;
private BindableBoolean checked = new BindableBoolean(false); private BindableBoolean checked = new BindableBoolean(false);
private BindableBoolean hidden = new BindableBoolean(false); private BindableBoolean hidden = new BindableBoolean(false);
private String testata; private String testata;
public CheckableOrdineLavoro(DialogChooseOrdsLavFromListItemModel item) { public CheckableOrdineLavoro(ChooseOrdsLavFromListItemModel item) {
this.item = item; this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override @Override
@ -25,11 +26,11 @@ public class CheckableOrdineLavoro {
}); });
} }
public DialogChooseOrdsLavFromListItemModel getItem() { public ChooseOrdsLavFromListItemModel getItem() {
return item; return item;
} }
public CheckableOrdineLavoro setItem(DialogChooseOrdsLavFromListItemModel item) { public CheckableOrdineLavoro setItem(ChooseOrdsLavFromListItemModel item) {
this.item = item; this.item = item;
this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@ -87,4 +88,12 @@ public class CheckableOrdineLavoro {
public void setTestata(String testata) { public void setTestata(String testata) {
this.testata = testata; this.testata = testata;
} }
public BindableFloat getNumCnf() {
return item.getOrdineLav().getNumCnfVersamento();
}
public void setNumCnf(float numCnf) {
this.item.getOrdineLav().setNumCnfVersamento(numCnf);
}
} }

View File

@ -13,6 +13,7 @@ import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -253,12 +254,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
if (posizione != null) { if (posizione != null) {
newMtbColt newMtbColt.setPosizione(posizione.getPosizione());
.setPosizione(posizione.getPosizione());
if (posizione.isFlagLineaProduzione()) { if (posizione.isFlagLineaProduzione()) {
newMtbColt newMtbColt.setCodJfas(posizione.getPosizione());
.setCodJfas(posizione.getPosizione());
} }
} }
@ -280,13 +278,14 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.setSerColloRif(sourceMtbColt.getSerCollo()) .setSerColloRif(sourceMtbColt.getSerCollo())
.setCodMart(original.getCodMart()) .setCodMart(original.getCodMart())
.setCodCol(original.getCodCol()) .setCodCol(original.getCodCol())
.setQtaCnf(original.getQtaCnf())
.setCodTagl(original.getCodTagl()) .setCodTagl(original.getCodTagl())
.setPartitaMag(original.getPartitaMag()) .setPartitaMag(original.getPartitaMag())
.setNumCnf(original.getNumCnf())
.setOperation(CommonModelConsts.OPERATION.INSERT); .setOperation(CommonModelConsts.OPERATION.INSERT);
for (OrdineLavorazioneDTO ordLav : ordini) { for (OrdineLavorazioneDTO ordLav : ordini) {
MtbColr ordColr = (MtbColr) mtbColrClone.clone(); MtbColr ordColr = (MtbColr) mtbColrClone.clone();
ordColr.setQtaCol(ordLav.getQtaColVersamento().getBigDecimal()); ordColr.setQtaCol(ordLav.getQtaColVersamento().getBigDecimal());
ordColr.setNumCnf(ordLav.getNumCnfVersamento().getBigDecimal());
ordColr.setDataOrd(ordLav.getDataOrdProd()) ordColr.setDataOrd(ordLav.getDataOrdProd())
.setNumOrd(ordLav.getNumOrdProd()) .setNumOrd(ordLav.getNumOrdProd())
.setRigaOrd(ordLav.getRigaOrdProd()); .setRigaOrd(ordLav.getRigaOrdProd());

View File

@ -1,5 +1,11 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import android.text.Html;
import android.text.Spanned;
import androidx.annotation.IdRes;
import androidx.annotation.StringRes;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -58,4 +64,12 @@ public class UtilityString {
return value; return value;
} }
public static Spanned formatHtmlString(String format, String... params){
return Html.fromHtml(String.format(format,params));
}
public static Spanned formatHtmlStringFromResId(@StringRes int stringId, String... params){
return Html.fromHtml(String.format(UtilityResources.getString(stringId),params));
}
} }

View File

@ -1,7 +1,6 @@
package it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list; package it.integry.integrywmsnative.gest.prod_versamento_materiale.core;
import android.content.Context; import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -14,7 +13,6 @@ import com.annimon.stream.Stream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -24,11 +22,15 @@ import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro; import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro;
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.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.DialogChooseOrdsLavFromListItemModelBinding; import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentChooseOrdsLavFromListItemModelBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<DialogChooseOrdsLavFromListAdapter.ViewHolder> { public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<ChooseOrdsLavFromListAdapter.ViewHolder> {
protected Context mContext; protected Context mContext;
@ -38,7 +40,7 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<Dia
private HashMap<CheckableOrdineLavoro, Integer> mDatasetPositions = new HashMap<>(); private HashMap<CheckableOrdineLavoro, Integer> mDatasetPositions = new HashMap<>();
public DialogChooseOrdsLavFromListAdapter(Context context, List<DialogChooseOrdsLavFromListItemModel> myDataset, MtbColt mtbColt) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { public ChooseOrdsLavFromListAdapter(Context context, List<ChooseOrdsLavFromListItemModel> myDataset, MtbColt mtbColt) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException {
mContext = context; mContext = context;
mMtbColt = mtbColt; mMtbColt = mtbColt;
mMtbColr = mtbColt.getMtbColr().get(0); mMtbColr = mtbColt.getMtbColr().get(0);
@ -50,7 +52,7 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<Dia
for (int i = 0; i < mDataset.size(); i++) { for (int i = 0; i < mDataset.size(); i++) {
final CheckableOrdineLavoro itemModel = mDataset.get(i); final CheckableOrdineLavoro itemModel = mDataset.get(i);
OrdineLavorazioneDTO ordine = itemModel.getItem().getOrdineLav(); OrdineLavorazioneDTO ordine = itemModel.getItem().getOrdineLav();
itemModel.setTestata(Html.fromHtml(String.format(mContext.getString(R.string.ord_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDateOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString()); itemModel.setTestata(UtilityString.formatHtmlStringFromResId(R.string.ord_testata, String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDateOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)).toString());
mDatasetPositions.put(itemModel, i); mDatasetPositions.put(itemModel, i);
itemModel.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { itemModel.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@ -78,9 +80,11 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<Dia
calculateMtbColtShare(); calculateMtbColtShare();
notifyDataSetChanged(); notifyDataSetChanged();
} }
private void onItemChecked(CheckableOrdineLavoro itemModel) { private void onItemChecked(CheckableOrdineLavoro itemModel) {
if (!itemModel.isChecked()){ if (!itemModel.isChecked()) {
itemModel.setQtaCol(0); itemModel.setQtaCol(0);
itemModel.setNumCnf(0);
} }
calculateMtbColtShare(); calculateMtbColtShare();
notifyDataSetChanged(); notifyDataSetChanged();
@ -89,36 +93,41 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<Dia
private void calculateMtbColtShare() { private void calculateMtbColtShare() {
MtbColr mtbColr = mMtbColt.getMtbColr().get(0); MtbColr mtbColr = mMtbColt.getMtbColr().get(0);
BigDecimal residuo = mtbColr.getQtaCol(); BigDecimal residuoCol = mtbColr.getQtaCol();
BigDecimal offset = BigDecimal.ZERO.add(residuo); BigDecimal residuoCnf = mtbColr.getNumCnf();
BigDecimal offset = BigDecimal.ZERO.add(residuoCol);
mtbColr.setQtaCnf(mtbColr.getQtaCol().divide(mtbColr.getNumCnf(),5,BigDecimal.ROUND_HALF_UP));
List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData(); List<CheckableOrdineLavoro> ordiniSelezionati = getSelectedData();
int totalHr = Stream.of(ordiniSelezionati).mapToInt(x -> x.getItem().getOrdineLav().getHrNum()).sum(); int totalHr = Stream.of(ordiniSelezionati).mapToInt(x -> x.getItem().getOrdineLav().getHrNum()).sum();
for (CheckableOrdineLavoro c : ordiniSelezionati) { for (CheckableOrdineLavoro c : ordiniSelezionati) {
float perc = (c.getItem().getOrdineLav().getHrNum() * 100)/ totalHr; BigDecimal usedCol, usedCnf;
BigDecimal used = residuo.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0,BigDecimal.ROUND_HALF_DOWN); float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr;
offset = offset.subtract(used); if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa())) {
c.setQtaCol(used.floatValue()); usedCnf = residuoCnf.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_CEILING);
} usedCol = usedCnf.multiply(mtbColr.getQtaCnf()).setScale(0,BigDecimal.ROUND_FLOOR);
if (ordiniSelezionati.size() > 0 && offset.floatValue() > 0){ } else {
Optional<CheckableOrdineLavoro> majorOrder = Stream.of(ordiniSelezionati).max((o1,o2)-> Integer.compare(o1.getItem().getOrdineLav().getHrNum(),o2.getItem().getOrdineLav().getHrNum())); usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR);
if (!majorOrder.isEmpty()){ usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(0, BigDecimal.ROUND_CEILING);
majorOrder.get().setQtaCol(majorOrder.get().getQtaCol().get()+offset.floatValue());
}else{
ordiniSelezionati.get(0).setQtaCol(ordiniSelezionati.get(0).getQtaCol().get()+offset.floatValue());
} }
offset = offset.subtract(usedCol);
c.setQtaCol(usedCol.floatValue());
c.setNumCnf(usedCnf.floatValue());
}
if (ordiniSelezionati.size() > 0 && offset.floatValue() != 0) {
CheckableOrdineLavoro majorOrder = Stream.of(ordiniSelezionati).max((o1, o2) -> Integer.compare(o1.getItem().getOrdineLav().getHrNum(), o2.getItem().getOrdineLav().getHrNum())).get();
if (majorOrder == null) {
majorOrder = ordiniSelezionati.get(0);
}
majorOrder.setQtaCol(majorOrder.getQtaCol().get() + offset.floatValue());
} }
} }
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
protected DialogChooseOrdsLavFromListItemModelBinding mViewDataBinding; protected FragmentChooseOrdsLavFromListItemModelBinding mViewDataBinding;
public ViewHolder(DialogChooseOrdsLavFromListItemModelBinding v) { public ViewHolder(FragmentChooseOrdsLavFromListItemModelBinding v) {
super(v.getRoot()); super(v.getRoot());
mViewDataBinding = v; mViewDataBinding = v;
} }
@ -127,26 +136,41 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter<Dia
mViewDataBinding.setCheckableOrdineLav(checkableOrdineLavoro); mViewDataBinding.setCheckableOrdineLav(checkableOrdineLavoro);
mViewDataBinding.setMtbColr(mtbColr); mViewDataBinding.setMtbColr(mtbColr);
mViewDataBinding.executePendingBindings(); mViewDataBinding.executePendingBindings();
if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissa())) {
String text = UtilityNumber.decimalToString(checkableOrdineLavoro.getQtaCol().get());
if (mtbColr.getMtbAart() != null) {
text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? "\n" + mtbColr.getMtbAart().getUntMis() : "";
}
mViewDataBinding.qtaTextview.setText(text);
} else {
mViewDataBinding.qtaTextview.setText(UtilityNumber.decimalToString(checkableOrdineLavoro.getNumCnf().get()) + "\n" + UtilityResources.getString(R.string.unt_mis_col));
}
mViewDataBinding.setMtbColr(mtbColr);
mViewDataBinding.executePendingBindings();
} }
} }
@Override @Override
public DialogChooseOrdsLavFromListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public ChooseOrdsLavFromListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view // create a new view
DialogChooseOrdsLavFromListItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_ords_lav_from_list__item_model, parent, false); FragmentChooseOrdsLavFromListItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.fragment_choose_ords_lav_from_list__item_model, parent, false);
return new ViewHolder(viewDataBinding); return new ViewHolder(viewDataBinding);
} }
@Override @Override
public void onBindViewHolder(DialogChooseOrdsLavFromListAdapter.ViewHolder holder, int position) { public void onBindViewHolder(ChooseOrdsLavFromListAdapter.ViewHolder holder, int position) {
CheckableOrdineLavoro item = mDataset.get(position); CheckableOrdineLavoro item = mDataset.get(position);
holder.bind(item, mMtbColr); holder.bind(item, mMtbColr);
} }
@Override @Override
public void onViewRecycled(DialogChooseOrdsLavFromListAdapter.ViewHolder holder) { public void onViewRecycled(ChooseOrdsLavFromListAdapter.ViewHolder holder) {
super.onViewRecycled(holder); super.onViewRecycled(holder);
} }

View File

@ -1,9 +1,9 @@
package it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list; package it.integry.integrywmsnative.gest.prod_versamento_materiale.core;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class DialogChooseOrdsLavFromListItemModel { public class ChooseOrdsLavFromListItemModel {
private OrdineLavorazioneDTO ordineLav; private OrdineLavorazioneDTO ordineLav;
private BindableBoolean hidden = new BindableBoolean(false); private BindableBoolean hidden = new BindableBoolean(false);
@ -12,7 +12,7 @@ public class DialogChooseOrdsLavFromListItemModel {
return ordineLav; return ordineLav;
} }
public DialogChooseOrdsLavFromListItemModel setOrdineLav(OrdineLavorazioneDTO ordineLav) { public ChooseOrdsLavFromListItemModel setOrdineLav(OrdineLavorazioneDTO ordineLav) {
this.ordineLav= ordineLav; this.ordineLav= ordineLav;
return this; return this;
} }
@ -21,7 +21,7 @@ public class DialogChooseOrdsLavFromListItemModel {
return hidden.get(); return hidden.get();
} }
public DialogChooseOrdsLavFromListItemModel setHidden(boolean hidden) { public ChooseOrdsLavFromListItemModel setHidden(boolean hidden) {
this.hidden.set(hidden); this.hidden.set(hidden);
return this; return this;
} }

View File

@ -99,6 +99,7 @@ public class OrdineLavorazioneDTO {
private BindableFloat qtaColVersamento = new BindableFloat(); private BindableFloat qtaColVersamento = new BindableFloat();
private BindableFloat numCnfVersamento = new BindableFloat();
public String getDataOrdProd() { public String getDataOrdProd() {
return dataOrdProd; return dataOrdProd;
@ -454,4 +455,12 @@ public class OrdineLavorazioneDTO {
public void setQtaColVersamento(float qtaColVersamento) { public void setQtaColVersamento(float qtaColVersamento) {
this.qtaColVersamento.set(qtaColVersamento); this.qtaColVersamento.set(qtaColVersamento);
} }
public BindableFloat getNumCnfVersamento() {
return numCnfVersamento;
}
public void setNumCnfVersamento(float numCnfVersamento) {
this.numCnfVersamento.set(numCnfVersamento);
}
} }

View File

@ -5,15 +5,23 @@ import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.text.Html; import android.text.Html;
import android.text.SpannableString; import android.text.SpannableString;
import android.view.View;
import android.widget.Toast;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.model.CheckableOrdineLavoro;
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.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione; import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
@ -21,16 +29,19 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; 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.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding; import it.integry.integrywmsnative.databinding.FragmentProdVersamentoMaterialeBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListAdapter;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper; import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ProdVersamentoMaterialHelper;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO; import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list.DialogChooseOrdsLavFromList;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
@ -42,7 +53,8 @@ public class ProdVersamentoMaterialViewModel {
private FragmentProdVersamentoMaterialeBinding mBinding; private FragmentProdVersamentoMaterialeBinding mBinding;
private ProdVersamentoMaterialHelper mHelper; private ProdVersamentoMaterialHelper mHelper;
private Runnable mOnVersamentoCompleted; private Runnable mOnVersamentoCompleted;
private List<ChooseOrdsLavFromListItemModel> mDataset = new ArrayList<>();
private ChooseOrdsLavFromListAdapter currentAdapter;
public ObservableField<MtbColt> mtbColt = new ObservableField<>(); public ObservableField<MtbColt> mtbColt = new ObservableField<>();
@ -55,6 +67,23 @@ public class ProdVersamentoMaterialViewModel {
BarcodeManager.enable(); BarcodeManager.enable();
} }
public void setMtbColr(MtbColr mtbColr) {
mBinding.descrArt.setText(mtbColr.getDescrizione());
mBinding.codArt.setText(mtbColr.getCodMart());
mBinding.batch.setText(mtbColr.getPartitaMag() + ((mtbColr.getRifPartitaMag() != null) ? " - "+ mtbColr.getRifPartitaMag().getDescrizione() : ""));
if (!SettingsManager.iDB().isFlagForceAllToColli() && (mtbColr.getMtbAart() == null || mtbColr.getMtbAart().isFlagQtaCnfFissa())) {
String text = UtilityNumber.decimalToString(mtbColr.getQtaCol());
if (mtbColr.getMtbAart() != null) {
text += !UtilityString.isNullOrEmpty(mtbColr.getMtbAart().getUntMis()) ? " " + mtbColr.getMtbAart().getUntMis() : "";
}
mBinding.qtaCol.setText(text);
} else {
mBinding.qtaCol.setText(UtilityNumber.decimalToString(mtbColr.getNumCnf()) + " " + UtilityResources.getString(R.string.unt_mis_col));
}
}
public void openLU() { public void openLU() {
DialogScanOrCreateLU.make(mContext, true, true, false, mtbColt -> { DialogScanOrCreateLU.make(mContext, true, true, false, mtbColt -> {
@ -89,18 +118,18 @@ public class ProdVersamentoMaterialViewModel {
if (!SettingsManager.iDB().isFlagVersamentoDirettoProduzione()) { if (!SettingsManager.iDB().isFlagVersamentoDirettoProduzione()) {
createColloScarico(mtbDepoPosizione); createColloScarico(mtbDepoPosizione);
} else { } else {
if (mtbColt == null || mtbColt.get() == null || mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size()<=0){ if (mtbColt == null || mtbColt.get() == null || mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() <= 0) {
DialogSimpleMessageHelper.makeWarningDialog(mContext, DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")), new SpannableString(Html.fromHtml("Il collo selezionato non presenta articoli versabili sulla linea.")),
null, this::openLU).show(); null, this::openLU).show();
return; return;
}else if (mtbColt.get().getMtbColr().size() > 1){ } else if (mtbColt.get().getMtbColr().size() > 1) {
DialogSimpleMessageHelper.makeWarningDialog(mContext, DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, per versarli in produzione vanno separati in colli differenti.")), new SpannableString(Html.fromHtml("Il collo selezionato contiene più articoli, per versarli in produzione vanno separati in colli differenti.")),
null, this::openLU).show(); null, this::openLU).show();
return; return;
} }
MesRESTConsumer.getOrdiniLavorazioneMateriale(mtbDepoPosizione.getPosizione(), getIdMaterialeFromCollo(mtbColt.get()) ,ordini-> richiediOrdiniPerVersamento(ordini,mtbDepoPosizione), e-> DialogSimpleMessageHelper.makeWarningDialog(mContext, MesRESTConsumer.getOrdiniLavorazioneMateriale(mtbDepoPosizione.getPosizione(), getIdMaterialeFromCollo(mtbColt.get()), ordini -> richiediOrdiniPerVersamento(ordini, mtbDepoPosizione), e -> DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml(e.getMessage())), new SpannableString(Html.fromHtml(e.getMessage())),
null, this::openLU).show()); null, this::openLU).show());
} }
@ -119,7 +148,7 @@ public class ProdVersamentoMaterialViewModel {
private String getIdMaterialeFromCollo(MtbColt mtbColt) { private String getIdMaterialeFromCollo(MtbColt mtbColt) {
MtbAart articolo = mtbColt.getMtbColr().get(0).getMtbAart(); MtbAart articolo = mtbColt.getMtbColr().get(0).getMtbAart();
return UtilityString.isNullOrEmpty(articolo.getIdArtEqui())? articolo.getCodMart():articolo.getIdArtEqui(); return UtilityString.isNullOrEmpty(articolo.getIdArtEqui()) ? articolo.getCodMart() : articolo.getIdArtEqui();
} }
@ -136,6 +165,7 @@ public class ProdVersamentoMaterialViewModel {
public void setMtbColt(MtbColt mtbColt) { public void setMtbColt(MtbColt mtbColt) {
this.mtbColt.set(mtbColt); this.mtbColt.set(mtbColt);
this.setMtbColr(mtbColt.getMtbColr().get(0));
} }
public void resetMtbColt() { public void resetMtbColt() {
@ -143,30 +173,51 @@ public class ProdVersamentoMaterialViewModel {
openLU(); openLU();
} }
public void richiediOrdiniPerVersamento(List<OrdineLavorazioneDTO> ordini, MtbDepoPosizione mtbDepoPosizione){ public void richiediOrdiniPerVersamento(List<OrdineLavorazioneDTO> ordini, MtbDepoPosizione mtbDepoPosizione) {
if (ordini == null || ordini.size() <= 0) {
mBinding.positiveFab.setVisibility(View.GONE);
mBinding.positiveFab.setOnClickListener(null);
mBinding.emptyView.setVisibility(View.VISIBLE);
return;
}
mBinding.positiveFab.setVisibility(View.VISIBLE);
mBinding.positiveFab.setOnClickListener(c -> onPositiveClick(mtbDepoPosizione));
for (OrdineLavorazioneDTO ordineLav : ordini) {
mDataset.add(new ChooseOrdsLavFromListItemModel().setOrdineLav(ordineLav));
}
mBinding.emptyView.setVisibility(mDataset != null && mDataset.size() > 0 ? View.GONE : View.VISIBLE);
try { try {
DialogChooseOrdsLavFromList.make(mContext, mtbColt.get(), ordini, ordLavs -> { initRecyclerView();
if (ordLavs.size() > 0){
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
ColliMagazzinoRESTConsumer.createColliScaricoDaOrdineLavorazione(mtbColt.get(), mtbDepoPosizione, ordLavs, generatedMtbColt -> DialogCommon.showDataSaved(mContext, () -> {
progressDialog.dismiss();
mOnVersamentoCompleted.run();
}), ex -> UtilityExceptions.defaultException(mContext, ex));
}else{
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(Html.fromHtml("Nessun ordine selezionato!")),
null, this::openLU).show();
mOnVersamentoCompleted.run();
}
},()->{
mOnVersamentoCompleted.run();
}).show();
} catch (Exception e) { } catch (Exception e) {
DialogSimpleMessageHelper.makeWarningDialog(mContext, UtilityExceptions.defaultException(mContext, e);
new SpannableString(Html.fromHtml("Si è verificato un errore. Riprovare")), }
null, this::openLU).show();
}
private void onPositiveClick(MtbDepoPosizione mtbDepoPosizione) {
List<OrdineLavorazioneDTO> ordLavs = currentAdapter.getSelectedItems();
if (ordLavs.size() > 0) {
Dialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
ColliMagazzinoRESTConsumer.createColliScaricoDaOrdineLavorazione(mtbColt.get(), mtbDepoPosizione, ordLavs, generatedMtbColt -> DialogCommon.showDataSaved(mContext, () -> {
progressDialog.dismiss();
mOnVersamentoCompleted.run();
}), ex -> UtilityExceptions.defaultException(mContext, ex));
} else {
Toast.makeText(mContext, "Nessun ordine selezionato!", Toast.LENGTH_SHORT).show();
} }
} }
private void initRecyclerView() throws ParseException, TimeNotRecognizedException, DateNotRecognizedException {
mBinding.dialogChooseArtsFromListaArtMainList.setNestedScrollingEnabled(false);
mBinding.dialogChooseArtsFromListaArtMainList.setHasFixedSize(true);
mBinding.dialogChooseArtsFromListaArtMainList.setLayoutManager(new LinearLayoutManager(mContext));
currentAdapter = new ChooseOrdsLavFromListAdapter(mContext, mDataset, mtbColt.get());
mBinding.dialogChooseArtsFromListaArtMainList.setAdapter(currentAdapter);
}
} }

View File

@ -1,108 +0,0 @@
package it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list;
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 androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.exception.DateNotRecognizedException;
import it.integry.integrywmsnative.core.exception.TimeNotRecognizedException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.databinding.DialogChooseOrdsLavFromListLayoutBinding;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
public class DialogChooseOrdsLavFromList {
private Context currentContext;
private Dialog mDialog;
private DialogChooseOrdsLavFromListAdapter currentAdapter;
private RunnableArgs<List<OrdineLavorazioneDTO>> mOnItemsChoosed;
private Runnable mOnAbort;
private MtbColt mMtbColt;
private List<DialogChooseOrdsLavFromListItemModel> mDataset;
public static Dialog make(final Context context, MtbColt collo, List<OrdineLavorazioneDTO> listaOrdini, RunnableArgs<List<OrdineLavorazioneDTO>> onItemsChoosed, Runnable onAbort) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException {
return new DialogChooseOrdsLavFromList(context, collo, listaOrdini, onItemsChoosed, onAbort).mDialog;
}
private DialogChooseOrdsLavFromList(Context context, MtbColt collo, List<OrdineLavorazioneDTO> listaOrdiniLavoro, RunnableArgs<List<OrdineLavorazioneDTO>> onItemsChoosed, Runnable onAbort) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException {
currentContext = context;
mOnItemsChoosed = onItemsChoosed;
mOnAbort = onAbort;
mMtbColt = collo;
mDataset = new ArrayList<>();
if(listaOrdiniLavoro != null){
for (OrdineLavorazioneDTO ordineLav : listaOrdiniLavoro) {
mDataset.add(new DialogChooseOrdsLavFromListItemModel().setOrdineLav(ordineLav));
}
}
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogChooseOrdsLavFromListLayoutBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_ords_lav_from_list_layout, null, false);
binding.setMtbColr(mMtbColt.getMtbColr().get(0));
binding.emptyView.setVisibility(mDataset != null && mDataset.size() > 0 ? View.GONE : View.VISIBLE);
mDialog = new Dialog(context);
mDialog.setContentView(binding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
initRecyclerView(binding);
binding.positiveButton.setOnClickListener(v -> {
mDialog.dismiss();
onPositiveClick();
});
binding.negativeButton.setOnClickListener(v -> {
mDialog.dismiss();
onNegativeClick();
});
}
private void initRecyclerView(DialogChooseOrdsLavFromListLayoutBinding binding) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException {
binding.dialogChooseArtsFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtsFromListaArtMainList.setHasFixedSize(true);
binding.dialogChooseArtsFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
currentAdapter = new DialogChooseOrdsLavFromListAdapter(currentContext, mDataset, mMtbColt);
binding.dialogChooseArtsFromListaArtMainList.setAdapter(currentAdapter);
}
private void onPositiveClick() {
if(mOnItemsChoosed != null) {
mOnItemsChoosed.run(currentAdapter.getSelectedItems());
}
}
private void onNegativeClick() {
if(this.mOnAbort != null) mOnAbort.run();
}
}

View File

@ -1,232 +0,0 @@
<?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="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="mtbColr"
type="it.integry.integrywmsnative.core.model.MtbColr"/>
</data>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/base_root"
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:id="@+id/title_container"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:background="@color/light_blue_300"-->
<!--android:gravity="center_horizontal">-->
<!--<androidx.appcompat.widget.AppCompatImageView-->
<!--android:id="@+id/title_icon"-->
<!--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:paddingBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/distribute_ul"
android:gravity="center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:layout_marginLeft="8dp"
android:layout_marginTop="12dp"
android:layout_marginRight="8dp"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/article"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="16sp" />
<TextView
android:id="@+id/cod_alis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="CAVOLO VERZA"
android:text="@{mtbColr.mtbAart.descrizione}"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/batch_lot"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="14sp" />
<TextView
android:id="@+id/descr_lis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="35119F0038"
android:text="@{mtbColr.partitaMag}"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/quantity"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="14sp" />
<TextView
android:id="@+id/qta_col"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="385 PZ"
android:text="@{UtilityNumber.decimalToString(mtbColr.qtaCol)+ ' ' + mtbColr.mtbAart.untMis}"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<LinearLayout
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_item_to_pick_text"
android:textSize="20sp"
android:gravity="center"
android:textColor="@color/empty_view_gray"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dialog_choose_arts_from_lista_art__main_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="8dp"
android:weightSum="1">
<com.google.android.material.button.MaterialButton
android:id="@+id/negative_button"
android:layout_weight="0.5"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:paddingStart="3dp"
android:paddingEnd="3dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/left_buttons_guideline"
app:layout_constraintEnd_toStartOf="@id/right_buttons_guideline"
android:text="@string/abort"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/positive_button"
android:layout_weight="0.5"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:paddingEnd="3dp"
android:paddingStart="3dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/right_buttons_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/confirm"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -6,8 +6,10 @@
<data> <data>
<import type="it.integry.integrywmsnative.R" /> <import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.settings.SettingsManager" />
<import type="android.view.View" /> <import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" /> <import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityResources" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable <variable
name="checkableOrdineLav" name="checkableOrdineLav"
@ -43,6 +45,7 @@
app:checked="@{checkableOrdineLav.checked}"/> app:checked="@{checkableOrdineLav.checked}"/>
<LinearLayout <LinearLayout
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -50,15 +53,37 @@
android:layout_toEndOf="@id/checkbox" android:layout_toEndOf="@id/checkbox"
android:layout_toStartOf="@id/qta_box"> android:layout_toStartOf="@id/qta_box">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{checkableOrdineLav.getTestata()}"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Medium"
tools:text="N° X del dd/mm/yyyy" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityNumber.decimalToString(checkableOrdineLav.qtaCol.get()) +' '+ mtbColr.mtbAart.untMis}"
android:visibility="@{SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.mtbAart != null &amp;&amp; !mtbColr.mtbAart.isFlagQtaCnfFissa()) ? View.VISIBLE : View.GONE}"
android:textSize="14sp"
android:textStyle="bold"
android:layout_alignParentEnd="true"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:background="@drawable/badge2_round_corner"
android:textColor="@android:color/white"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="PESO KG" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{checkableOrdineLav.getTestata()}"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
tools:text="N° X del dd/mm/yyyy" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent" android:layout_width="match_parent"
@ -67,7 +92,7 @@
android:maxLines="2" android:maxLines="2"
android:text="@{checkableOrdineLav.item.ordineLav.codProd +' '+ checkableOrdineLav.item.ordineLav.descrizioneProd}" android:text="@{checkableOrdineLav.item.ordineLav.codProd +' '+ checkableOrdineLav.item.ordineLav.descrizioneProd}"
android:textColor="@android:color/secondary_text_light" android:textColor="@android:color/secondary_text_light"
android:textSize="14sp" style="@style/AppTheme.NewMaterial.Text.Medium"
tools:text="150303-010 CAVOLO VERZA 6 PZ PL NERA 604018" /> tools:text="150303-010 CAVOLO VERZA 6 PZ PL NERA 604018" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -75,10 +100,18 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2" android:maxLines="2"
android:text="@{checkableOrdineLav.item.ordineLav.partitaMag}" style="@style/AppTheme.NewMaterial.Text.Small"
android:textColor="@android:color/holo_red_light" android:text="@{UtilityString.formatHtmlStringFromResId(R.string.batch_lot_text, checkableOrdineLav.item.ordineLav.partitaMag)}"
android:textSize="14sp"
tools:text="Lotto: 35119F0038" /> tools:text="Lotto: 35119F0038" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:visibility="@{!UtilityString.isNullOrEmpty(checkableOrdineLav.item.ordineLav.noteLav) ? View.VISIBLE : View.GONE}"
android:maxLines="2"
style="@style/AppTheme.NewMaterial.Text.Small"
android:text="@{UtilityString.formatHtmlStringFromResId(R.string.notes_text, checkableOrdineLav.item.ordineLav.noteLav)}"
tools:text="note: prova" />
@ -97,6 +130,7 @@
android:layout_centerVertical="true"> android:layout_centerVertical="true">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/qta_textview"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner" android:background="@drawable/badge1_round_corner"
@ -105,11 +139,12 @@
android:paddingTop="2dp" android:paddingTop="2dp"
android:paddingRight="6dp" android:paddingRight="6dp"
android:paddingBottom="2dp" android:paddingBottom="2dp"
android:text="@{UtilityNumber.decimalToString(checkableOrdineLav.qtaCol.get()) + (mtbColr.mtbAart != null &amp;&amp; !UtilityString.isNullOrEmpty(mtbColr.mtbAart.untMis) ? `\n` + mtbColr.mtbAart.untMis : ``)}"
android:textSize="16sp" android:textSize="16sp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:textStyle="bold"
tools:text="15\nKG" /> android:textAllCaps="true"
style="@style/AppTheme.NewMaterial.Text.Small"
tools:text="280.45\nCONF" />
</RelativeLayout> </RelativeLayout>

View File

@ -1,18 +1,183 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools" <layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
</data> </data>
<FrameLayout <FrameLayout
android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent" android:id="@+id/base_root"
tools:context=".gest.prod_versamento_materiale.ProdVersamentoMaterialeFragment"> android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:visibility="visible"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
</FrameLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.DialogTitle"
android:text="@string/distribute_ul"
android:gravity="center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:layout_marginLeft="8dp"
android:layout_marginTop="12dp"
android:layout_marginRight="8dp"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/descr_art"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="CAVOLO VERZA"
style="@style/AppTheme.NewMaterial.Text.Small"
android:textColor="@color/colorPrimary"
android:textStyle="bold"
android:layout_marginEnd="8dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/article"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="16sp" />
<TextView
android:id="@+id/cod_art"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="150303-010"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/batch_lot"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="14sp" />
<TextView
android:id="@+id/batch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="35119F0038"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/quantity"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="14sp" />
<TextView
android:id="@+id/qta_col"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="385 CONF"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<LinearLayout
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_available_order_on_line"
android:textSize="20sp"
android:gravity="center"
android:textColor="@color/empty_view_gray"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dialog_choose_arts_from_lista_art__main_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="80dp"
android:clipToPadding="false"
android:scrollbarStyle="outsideOverlay"/>
</RelativeLayout>
</LinearLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/positive_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:tint="@android:color/white"
style="@style/Widget.MaterialComponents.FloatingActionButton"
app:srcCompat="@drawable/ic_check_black_24dp" />
</FrameLayout>
</layout> </layout>

View File

@ -132,6 +132,7 @@
<string name="batch_lot">Lotto</string> <string name="batch_lot">Lotto</string>
<string name="batch_lot_text"><![CDATA[Lotto: <b>%s</b>]]></string> <string name="batch_lot_text"><![CDATA[Lotto: <b>%s</b>]]></string>
<string name="notes_text"><![CDATA[Note: <b>%s</b>]]></string>
<string name="expire_date">Data scad</string> <string name="expire_date">Data scad</string>
<string name="num_pcks">Num cnf</string> <string name="num_pcks">Num cnf</string>
<string name="qty_x_pck"><![CDATA[Qtà x cnf]]></string> <string name="qty_x_pck"><![CDATA[Qtà x cnf]]></string>
@ -165,6 +166,7 @@
<string name="no_item_to_pick_text">Nessun articolo da prelevare</string> <string name="no_item_to_pick_text">Nessun articolo da prelevare</string>
<string name="no_docs_to_show_text">Nessun documento da mostrare</string> <string name="no_docs_to_show_text">Nessun documento da mostrare</string>
<string name="no_orders_to_pick_text">Nessun ordine da evadere</string> <string name="no_orders_to_pick_text">Nessun ordine da evadere</string>
<string name="no_available_order_on_line">Nessun ordine compatibile</string>
<string name="no_item_text">Nessun articolo</string> <string name="no_item_text">Nessun articolo</string>
<string name="no_item_in_recupera_materiale">Nessuna UL versata in produzione</string> <string name="no_item_in_recupera_materiale">Nessuna UL versata in produzione</string>

View File

@ -131,6 +131,7 @@
<string name="level">Level</string> <string name="level">Level</string>
<string name="not_valid">Not valid</string> <string name="not_valid">Not valid</string>
<string name="batch_lot_text"><![CDATA[Batch lot: <b>%s</b>]]></string> <string name="batch_lot_text"><![CDATA[Batch lot: <b>%s</b>]]></string>
<string name="notes_text"><![CDATA[Notes: <b>%s</b>]]></string>
<string name="expire_date">Expire date</string> <string name="expire_date">Expire date</string>
<string name="num_pcks">Pcks num</string> <string name="num_pcks">Pcks num</string>
<string name="qty_x_pck">Qty x pck</string> <string name="qty_x_pck">Qty x pck</string>
@ -166,6 +167,7 @@
<string name="no_item_to_pick_text">No items to pick</string> <string name="no_item_to_pick_text">No items to pick</string>
<string name="no_docs_to_show_text">No documents to show</string> <string name="no_docs_to_show_text">No documents to show</string>
<string name="no_orders_to_pick_text">No orders to dispatch</string> <string name="no_orders_to_pick_text">No orders to dispatch</string>
.<string name="no_available_order_on_line">no compatible orders found</string>
<string name="no_item_text">No items</string> <string name="no_item_text">No items</string>
<string name="no_item_in_recupera_materiale">No LU poured into production</string> <string name="no_item_in_recupera_materiale">No LU poured into production</string>