diff --git a/app/build.gradle b/app/build.gradle index d338e40d..d21fc5dc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 116 - def appVersionName = '1.10.13' + def appVersionCode = 117 + def appVersionName = '1.10.14' signingConfigs { release { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java b/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java index 3ef612a7..464e2f46 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/model/CheckableOrdineLavoro.java @@ -2,20 +2,21 @@ package it.integry.integrywmsnative.core.model; import androidx.databinding.Observable; +import java.util.List; + import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableFloat; -import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArtsItemModel; -import it.integry.integrywmsnative.view.dialogs.choose_ordsLav_from_list.DialogChooseOrdsLavFromListItemModel; +import it.integry.integrywmsnative.gest.prod_versamento_materiale.core.ChooseOrdsLavFromListItemModel; public class CheckableOrdineLavoro { - private DialogChooseOrdsLavFromListItemModel item; + private ChooseOrdsLavFromListItemModel item; private BindableBoolean checked = new BindableBoolean(false); private BindableBoolean hidden = new BindableBoolean(false); private String testata; - public CheckableOrdineLavoro(DialogChooseOrdsLavFromListItemModel item) { + public CheckableOrdineLavoro(ChooseOrdsLavFromListItemModel item) { this.item = item; this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @Override @@ -25,11 +26,11 @@ public class CheckableOrdineLavoro { }); } - public DialogChooseOrdsLavFromListItemModel getItem() { + public ChooseOrdsLavFromListItemModel getItem() { return item; } - public CheckableOrdineLavoro setItem(DialogChooseOrdsLavFromListItemModel item) { + public CheckableOrdineLavoro setItem(ChooseOrdsLavFromListItemModel item) { this.item = item; this.item.getHidden().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() { @@ -87,4 +88,12 @@ public class CheckableOrdineLavoro { public void setTestata(String testata) { this.testata = testata; } + + public BindableFloat getNumCnf() { + return item.getOrdineLav().getNumCnfVersamento(); + } + + public void setNumCnf(float numCnf) { + this.item.getOrdineLav().setNumCnfVersamento(numCnf); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java index f60a03d7..37ac48e7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/ColliMagazzinoRESTConsumer.java @@ -13,6 +13,7 @@ import com.google.gson.reflect.TypeToken; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Type; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; @@ -253,12 +254,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { if (posizione != null) { - newMtbColt - .setPosizione(posizione.getPosizione()); - + newMtbColt.setPosizione(posizione.getPosizione()); if (posizione.isFlagLineaProduzione()) { - newMtbColt - .setCodJfas(posizione.getPosizione()); + newMtbColt.setCodJfas(posizione.getPosizione()); } } @@ -280,13 +278,14 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer { .setSerColloRif(sourceMtbColt.getSerCollo()) .setCodMart(original.getCodMart()) .setCodCol(original.getCodCol()) + .setQtaCnf(original.getQtaCnf()) .setCodTagl(original.getCodTagl()) .setPartitaMag(original.getPartitaMag()) - .setNumCnf(original.getNumCnf()) .setOperation(CommonModelConsts.OPERATION.INSERT); for (OrdineLavorazioneDTO ordLav : ordini) { MtbColr ordColr = (MtbColr) mtbColrClone.clone(); ordColr.setQtaCol(ordLav.getQtaColVersamento().getBigDecimal()); + ordColr.setNumCnf(ordLav.getNumCnfVersamento().getBigDecimal()); ordColr.setDataOrd(ordLav.getDataOrdProd()) .setNumOrd(ordLav.getNumOrdProd()) .setRigaOrd(ordLav.getRigaOrdProd()); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java index 3a1b6f09..094e3664 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityString.java @@ -1,5 +1,11 @@ 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.Pattern; @@ -58,4 +64,12 @@ public class UtilityString { 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)); + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_ordsLav_from_list/DialogChooseOrdsLavFromListAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java similarity index 53% rename from app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_ordsLav_from_list/DialogChooseOrdsLavFromListAdapter.java rename to app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java index df6710ae..cd6dee09 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/choose_ordsLav_from_list/DialogChooseOrdsLavFromListAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_versamento_materiale/core/ChooseOrdsLavFromListAdapter.java @@ -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.text.Html; import android.view.LayoutInflater; import android.view.ViewGroup; @@ -14,7 +13,6 @@ import com.annimon.stream.Stream; import java.math.BigDecimal; import java.text.ParseException; -import java.util.Comparator; import java.util.HashMap; 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.MtbColr; 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.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; -public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter { +public class ChooseOrdsLavFromListAdapter extends RecyclerView.Adapter { protected Context mContext; @@ -38,7 +40,7 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter mDatasetPositions = new HashMap<>(); - public DialogChooseOrdsLavFromListAdapter(Context context, List myDataset, MtbColt mtbColt) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { + public ChooseOrdsLavFromListAdapter(Context context, List myDataset, MtbColt mtbColt) throws ParseException, TimeNotRecognizedException, DateNotRecognizedException { mContext = context; mMtbColt = mtbColt; mMtbColr = mtbColt.getMtbColr().get(0); @@ -50,7 +52,7 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter ordiniSelezionati = getSelectedData(); - int totalHr = Stream.of(ordiniSelezionati).mapToInt(x -> x.getItem().getOrdineLav().getHrNum()).sum(); for (CheckableOrdineLavoro c : ordiniSelezionati) { - float perc = (c.getItem().getOrdineLav().getHrNum() * 100)/ totalHr; - BigDecimal used = residuo.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0,BigDecimal.ROUND_HALF_DOWN); - offset = offset.subtract(used); - c.setQtaCol(used.floatValue()); - } - if (ordiniSelezionati.size() > 0 && offset.floatValue() > 0){ - Optional majorOrder = Stream.of(ordiniSelezionati).max((o1,o2)-> Integer.compare(o1.getItem().getOrdineLav().getHrNum(),o2.getItem().getOrdineLav().getHrNum())); - if (!majorOrder.isEmpty()){ - majorOrder.get().setQtaCol(majorOrder.get().getQtaCol().get()+offset.floatValue()); - }else{ - ordiniSelezionati.get(0).setQtaCol(ordiniSelezionati.get(0).getQtaCol().get()+offset.floatValue()); + BigDecimal usedCol, usedCnf; + float perc = (c.getItem().getOrdineLav().getHrNum() * 100) / totalHr; + if (SettingsManager.iDB().isFlagForceAllToColli() || (mtbColr.getMtbAart() != null && !mtbColr.getMtbAart().isFlagQtaCnfFissa())) { + 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); + } else { + usedCol = residuoCol.multiply(BigDecimal.valueOf(perc)).divide(BigDecimal.valueOf(100)).setScale(0, BigDecimal.ROUND_FLOOR); + usedCnf = usedCol.divide(mtbColr.getQtaCnf()).setScale(0, BigDecimal.ROUND_CEILING); } + 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 { - protected DialogChooseOrdsLavFromListItemModelBinding mViewDataBinding; + protected FragmentChooseOrdsLavFromListItemModelBinding mViewDataBinding; - public ViewHolder(DialogChooseOrdsLavFromListItemModelBinding v) { + public ViewHolder(FragmentChooseOrdsLavFromListItemModelBinding v) { super(v.getRoot()); mViewDataBinding = v; } @@ -127,26 +136,41 @@ public class DialogChooseOrdsLavFromListAdapter extends RecyclerView.Adapter