From b8dbde5ee1421e9cb12c47118d0c8247bb0ab81d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 21 Feb 2022 10:29:25 +0100 Subject: [PATCH 1/6] Rimosso Coollection --- .../core/coollection/Coollection.java | 49 ---------- .../core/coollection/matcher/Matcher.java | 7 -- .../coollection/matcher/custom/Contains.java | 18 ---- .../coollection/matcher/custom/Equals.java | 18 ---- .../matcher/custom/EqualsIgnoreCase.java | 18 ---- .../matcher/custom/GreaterThan.java | 21 ----- .../coollection/matcher/custom/IsNull.java | 12 --- .../coollection/matcher/custom/LessThan.java | 21 ----- .../core/coollection/matcher/custom/Not.java | 18 ---- .../core/coollection/query/Query.java | 90 ------------------- .../coollection/query/criteria/Criteria.java | 34 ------- .../query/criteria/CriteriaList.java | 34 ------- .../core/coollection/query/order/Order.java | 5 -- .../query/order/OrderComparator.java | 30 ------- .../query/order/OrderCriteria.java | 24 ----- .../query/specification/Specification.java | 9 -- .../custom/AndSpecification.java | 13 --- .../specification/custom/OrSpecification.java | 14 --- .../core/coollection/reflection/Phanton.java | 37 -------- 19 files changed, 472 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java delete mode 100644 app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java deleted file mode 100644 index 447fd58e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/Coollection.java +++ /dev/null @@ -1,49 +0,0 @@ -package it.integry.integrywmsnative.core.coollection; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Contains; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Equals; -import it.integry.integrywmsnative.core.coollection.matcher.custom.EqualsIgnoreCase; -import it.integry.integrywmsnative.core.coollection.matcher.custom.GreaterThan; -import it.integry.integrywmsnative.core.coollection.matcher.custom.IsNull; -import it.integry.integrywmsnative.core.coollection.matcher.custom.LessThan; -import it.integry.integrywmsnative.core.coollection.matcher.custom.Not; -import it.integry.integrywmsnative.core.coollection.query.Query; - -import java.util.Collection; - -public class Coollection { - - public static Query from(Collection collection) { - return new Query(collection); - } - - public static Matcher eq(Object value) { - return new Equals(value); - } - - public static Matcher contains(String value) { - return new Contains(value); - } - - public static Matcher eqIgnoreCase(String value) { - return new EqualsIgnoreCase(value); - } - - public static Matcher not(Matcher matcher) { - return new Not(matcher); - } - - public static Matcher greaterThan(Number value) { - return new GreaterThan(value); - } - - public static Matcher lessThan(Number value) { - return new LessThan(value); - } - - public static Matcher isNull() { - return new IsNull(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java deleted file mode 100644 index c2b41db2..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/Matcher.java +++ /dev/null @@ -1,7 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher; - -public interface Matcher { - - boolean match(Object value); - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java deleted file mode 100644 index e0d80ac7..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Contains.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Contains implements Matcher { - - private final String matcherValue; - - public Contains(String matcherValue) { - this.matcherValue = matcherValue; - } - - @Override - public boolean match(Object value) { - return String.valueOf(value).contains(matcherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java deleted file mode 100644 index ca2cc6c1..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Equals.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Equals implements Matcher { - - private final Object value; - - public Equals(Object value) { - this.value = value; - } - - @Override - public boolean match(Object anotherValue) { - return value.equals(anotherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java deleted file mode 100644 index 5c138c93..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/EqualsIgnoreCase.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class EqualsIgnoreCase implements Matcher { - - private final String value; - - public EqualsIgnoreCase(String value) { - this.value = value; - } - - @Override - public boolean match(Object anotherValue) { - return (value).equalsIgnoreCase((String) anotherValue); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java deleted file mode 100644 index 1414a9e0..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/GreaterThan.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class GreaterThan implements Matcher { - - private final Number value; - - public GreaterThan(Number value) { - this.value = value; - } - - @Override - public boolean match(Object matchValue) { - if (matchValue == null) { - return false; - } - return ((Number) matchValue).doubleValue() > value.doubleValue(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java deleted file mode 100644 index f14151e5..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/IsNull.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class IsNull implements Matcher { - - @Override - public boolean match(Object value) { - return value == null; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java deleted file mode 100644 index c9c3c99e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/LessThan.java +++ /dev/null @@ -1,21 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class LessThan implements Matcher { - - private final Number value; - - public LessThan(Number value) { - this.value = value; - } - - @Override - public boolean match(Object matchValue) { - if (matchValue == null) { - return false; - } - return ((Number) matchValue).doubleValue() < value.doubleValue(); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java deleted file mode 100644 index dd76555f..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/matcher/custom/Not.java +++ /dev/null @@ -1,18 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.matcher.custom; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; - -public class Not implements Matcher { - - private final Matcher matcher; - - public Not(Matcher matcher) { - this.matcher = matcher; - } - - @Override - public boolean match(Object value) { - return !matcher.match(value); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java deleted file mode 100644 index e6220bea..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/Query.java +++ /dev/null @@ -1,90 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query; - - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.criteria.CriteriaList; -import it.integry.integrywmsnative.core.coollection.query.order.Order; -import it.integry.integrywmsnative.core.coollection.query.order.OrderCriteria; -import it.integry.integrywmsnative.core.coollection.query.specification.custom.AndSpecification; -import it.integry.integrywmsnative.core.coollection.query.specification.custom.OrSpecification; - -public class Query { - - private final Collection collection; - private CriteriaList criterias; - private OrderCriteria orderCriteria; - - public Query(Collection collection) { - this.collection = collection; - criterias = new CriteriaList(); - } - - public Query where(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criterias.add(criteria); - return this; - } - - public Query and(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criteria.setSpecification(new AndSpecification()); - criterias.add(criteria); - return this; - } - - public Query or(String method, Matcher matcher) { - Criteria criteria = new Criteria(method, matcher); - criteria.setSpecification(new OrSpecification()); - criterias.add(criteria); - return this; - } - - public Query orderBy(String method, Order order) { - orderCriteria = new OrderCriteria(method, order); - return this; - } - - public Query orderBy(String method) { - return orderBy(method, Order.ASC); - } - - public List all() { - List all = new ArrayList(); - for (T item : collection) { - if (criterias.match(item)) { - all.add(item); - } - } - if (orderCriteria != null) { - all = orderCriteria.sort(all); - } - return all; - } - - public T first() { - List all = cloneCollection(collection); - if (orderCriteria != null) { - all = orderCriteria.sort(all); - } - for (T item : all) { - if (criterias.match(item)) { - return item; - } - } - return null; - } - - private List cloneCollection(Collection collection) { - List list = new ArrayList(); - for (T item : collection) { - list.add(item); - } - return list; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java deleted file mode 100644 index 027d232a..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/Criteria.java +++ /dev/null @@ -1,34 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.criteria; - -import it.integry.integrywmsnative.core.coollection.matcher.Matcher; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; -import it.integry.integrywmsnative.core.coollection.reflection.Phanton; - -public class Criteria { - - private final String method; - private final Matcher matcher; - private Specification specification; - - public Criteria(String method, Matcher matcher) { - this.method = method; - this.matcher = matcher; - } - - public void setSpecification(Specification specification) { - this.specification = specification; - } - - public Specification specification() { - return specification; - } - - public boolean match(T item) { - try { - Object value = Phanton.from(item).call(method); - return matcher.match(value); - } catch (Exception err) { - throw new RuntimeException(err); - } - } -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java deleted file mode 100644 index e2f2f433..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/criteria/CriteriaList.java +++ /dev/null @@ -1,34 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.criteria; - -import java.util.ArrayList; -import java.util.List; - -public class CriteriaList { - - private List> criterias; - - public CriteriaList() { - criterias = new ArrayList>(); - } - - public void add(Criteria criteria) { - criterias.add(criteria); - } - - public boolean match(T item) { - if (criterias.size() == 0) { - return true; - } - if (criterias.size() == 1) { - return criterias.get(0).match(item); - } - boolean matched = true; - for (int i = criterias.size() - 1; i > 0; i--) { - Criteria one = criterias.get(i); - Criteria other = criterias.get(i - 1); - matched = matched && one.specification().match(item, one, other); - } - return matched; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java deleted file mode 100644 index 4ed8e86c..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/Order.java +++ /dev/null @@ -1,5 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -public enum Order { - ASC, DESC -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java deleted file mode 100644 index a4bc0e64..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderComparator.java +++ /dev/null @@ -1,30 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -import it.integry.integrywmsnative.core.coollection.reflection.Phanton; - -import java.util.Comparator; - -public class OrderComparator implements Comparator { - - private final String method; - - public OrderComparator(String method) { - this.method = method; - } - - @Override - @SuppressWarnings("unchecked") - public int compare(T one, T other) { - Object oneValue = Phanton.from(one).call(method); - Object otherValue = Phanton.from(other).call(method); - if (oneValue == null || otherValue == null) { - return 0; - } - if (oneValue instanceof Comparable) { - return ((Comparable) oneValue).compareTo(otherValue); - } else { - return 0; - } - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java deleted file mode 100644 index a049dc1e..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/order/OrderCriteria.java +++ /dev/null @@ -1,24 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.order; - -import java.util.Collections; -import java.util.List; - -public class OrderCriteria { - - private final String method; - private final Order order; - - public OrderCriteria(String method, Order order) { - this.method = method; - this.order = order; - } - - public List sort(List list) { - Collections.sort(list, new OrderComparator(method)); - if (order == Order.DESC) { - Collections.reverse(list); - } - return list; - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java deleted file mode 100644 index 719ea931..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/Specification.java +++ /dev/null @@ -1,9 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; - -public interface Specification { - - boolean match(T item, Criteria one, Criteria other); - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java deleted file mode 100644 index 6119df2d..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/AndSpecification.java +++ /dev/null @@ -1,13 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification.custom; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; - -public class AndSpecification implements Specification { - - @Override - public boolean match(T item, Criteria one, Criteria other) { - return one.match(item) && other.match(item); - } - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java deleted file mode 100644 index 2b83db22..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/query/specification/custom/OrSpecification.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.query.specification.custom; - -import it.integry.integrywmsnative.core.coollection.query.criteria.Criteria; -import it.integry.integrywmsnative.core.coollection.query.specification.Specification; - -public class OrSpecification implements Specification { - - @Override - public boolean match(T item, Criteria one, Criteria other) { - return one.match(item) || other.match(item); - } - - -} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java b/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java deleted file mode 100644 index 0c8cf9c9..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/core/coollection/reflection/Phanton.java +++ /dev/null @@ -1,37 +0,0 @@ -package it.integry.integrywmsnative.core.coollection.reflection; - -import java.lang.reflect.Field; - -public class Phanton { - - private final T target; - private Class clazz; - - private Phanton(T target) { - this.target = target; - clazz = target.getClass(); - } - - public static Phanton from(T target) { - return new Phanton(target); - } - - public Object call(String name) { - return invoke(name); - } - - private Object invoke(String name) { - for (final Field field : clazz.getDeclaredFields()) { - try { - if (name.equals(field.getName())) { - field.setAccessible(Boolean.TRUE); - return field.get(target); - } - } catch (final IllegalAccessException e) { - throw new RuntimeException(e); - } - } - throw new RuntimeException("No such property with name " + name); - } - -} From 8e40092130ed49a5d50a8173543bbbe553392b43 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 21 Feb 2022 16:31:11 +0100 Subject: [PATCH 2/6] [CARELLI - ORDINI A] aggiunti automaticamente all'ordine gli articoli nuovi in griglia [CARELLI - DOC INTERNI] modificato controllo sul lotto per partire solo nei documenti richiesti (tramite setup) --- .../core/data_store/db/AppDatabase.java | 2 +- .../data_store/db/dao/ArticoloGrigliaDao.java | 7 +- .../data_store/db/entity/ArticoloGriglia.java | 12 + .../data_store/db/entity/ArticoloOrdine.java | 27 ++- .../repository/ArticoloGrigliaRepository.java | 2 + .../ArticoliGrigliaDataSource.java | 10 + .../ArticoliOrdineDataSource.java | 8 +- .../data_store/db/view_model/ArticoloDTO.java | 53 +++-- .../core/settings/DBSettingsModel.java | 28 ++- .../core/settings/SettingsManager.java | 22 +- .../core/utility/UtilityFocus.java | 3 +- .../dto/GrigliaAcquistiChildDTO.java | 10 + .../DocInterniEditFormViewModel.java | 28 ++- .../PVOrdineAcquistoEditActivity.java | 43 +++- .../dialog/EditArticoloDialog.java | 30 ++- .../helper/PVEditOrderHelper.java | 13 +- .../dialogs/DialogScanLisA.java | 9 +- .../res/drawable/ic_baseline_alert_24.xml | 10 + .../main/res/drawable/ic_baseline_new_24.xml | 10 + .../res/drawable/ic_baseline_stars_24.xml | 10 + .../res/layout/dialog_pv_edit_articolo.xml | 40 +++- ...coli_ordine_acquisto__list_single_item.xml | 32 ++- .../layout/fragment_pv_ordini_acquisto.xml | 210 ++++++++---------- app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 25 files changed, 441 insertions(+), 182 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_alert_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_new_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_stars_24.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java index 94ef061a..c69bda7d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/AppDatabase.java @@ -18,7 +18,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; -@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 5, exportSchema = false) +@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 7, exportSchema = false) @TypeConverters({ DateConverter.class }) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java index c501cc7f..42c01e96 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/dao/ArticoloGrigliaDao.java @@ -6,7 +6,6 @@ import androidx.room.Insert; import androidx.room.Query; import androidx.room.Update; -import java.util.ArrayList; import java.util.List; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; @@ -21,10 +20,13 @@ public interface ArticoloGrigliaDao { @Insert void insertAll(List articoli); + @Insert Long insert(ArticoloGriglia articolo); + @Update void updateAll(List articoli); + @Update void update(ArticoloGriglia articolo); @@ -45,4 +47,7 @@ public interface ArticoloGrigliaDao { @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId") List getArticoliFromGriglia(int grigliaId); + + @Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId and new_no_promo = 1") + List getNewArticoliInGriglia(int grigliaId); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java index f42f98bd..f28a2434 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloGriglia.java @@ -71,6 +71,9 @@ public class ArticoloGriglia { @ColumnInfo(name = "id_griglia") private int idGriglia; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo = false; + public int getArticoloGrigliaId() { return articoloGrigliaId; } @@ -191,6 +194,14 @@ public class ArticoloGriglia { this.qtaProposta = qtaProposta; } + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + } + public ArticoloOrdine convertToArticoloOrdine(Ordine ordine) { ArticoloOrdine articolo = new ArticoloOrdine(); @@ -210,6 +221,7 @@ public class ArticoloGriglia { articolo.setGiacenza(BigDecimal.valueOf(this.getGiacenza())); articolo.setQtaPrevistaVendita(BigDecimal.valueOf(this.getQtaPrevistaVendita())); articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta())); + articolo.setNewNoPromo(this.isNewNoPromo()); articolo.setQtaOrd(0); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java index f55a69d5..5ee30523 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/entity/ArticoloOrdine.java @@ -29,7 +29,7 @@ import java.util.Date; public class ArticoloOrdine { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "articolo_ordine_id") - private int articoloOrdineId; + private Integer articoloOrdineId; @ColumnInfo(name = "cod_mart") private String codMart; @@ -67,6 +67,8 @@ public class ArticoloOrdine { @ColumnInfo(name = "data_ins") private Date dataIns; + @ColumnInfo(name = "new_no_promo") + private boolean newNoPromo; @Ignore private int ggScadenza = 0; @@ -81,7 +83,7 @@ public class ArticoloOrdine { private BigDecimal qtaProposta = BigDecimal.ZERO; - public int getArticoloOrdineId() { + public Integer getArticoloOrdineId() { return articoloOrdineId; } @@ -221,14 +223,23 @@ public class ArticoloOrdine { return this; } - public BigDecimal getQtaCnfPrevistaVendita(){ - return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfPrevistaVendita() { + return qtaPrevistaVendita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaPrevistaVendita.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfProposta(){ - return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + public BigDecimal getQtaCnfProposta() { + return qtaProposta.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : qtaProposta.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); } - public BigDecimal getQtaCnfGiacenza(){ - return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf),0, RoundingMode.CEILING); + + public BigDecimal getQtaCnfGiacenza() { + return giacenza.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : giacenza.divide(BigDecimal.valueOf(qtaCnf), 0, RoundingMode.CEILING); + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public void setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java index cbcfc259..eb712af8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/ArticoloGrigliaRepository.java @@ -16,4 +16,6 @@ public interface ArticoloGrigliaRepository { void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs onSuccess, RunnableArgs onFail); + void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail); + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java index 51f16d58..d47945ed 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliGrigliaDataSource.java @@ -89,4 +89,14 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri } }); } + + public void findNewArticoliInGrigla(int idGriglia, RunnableArgs> onSuccess, RunnableArgs onFail) { + execute(() -> { + try { + onSuccess.run(mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia)); + } catch (Exception e) { + onFail.run(e); + } + }); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java index d3ec82e8..a82c193e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/repository/implementations/ArticoliOrdineDataSource.java @@ -28,13 +28,15 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); for (ArticoloOrdine art : articoli) { - if (art.getArticoloOrdineId() > 0) { + if (art.getArticoloOrdineId() != null && art.getArticoloOrdineId() > 0) { toUpdate.add(art); } else { toInsert.add(art); } } - mArticoloOrdineDao.insertAll(toInsert); + for (ArticoloOrdine newArt : toInsert) { + mArticoloOrdineDao.insert(newArt); + } mArticoloOrdineDao.updateAll(toUpdate); onSuccess.run(); @@ -48,7 +50,7 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs onFail) { execute(() -> { try { - if (articolo.getArticoloOrdineId() > 0) { + if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) { mArticoloOrdineDao.update(articolo); } else { mArticoloOrdineDao.insert(articolo); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java index 0ac39bc9..f3c7a02b 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/data_store/db/view_model/ArticoloDTO.java @@ -1,35 +1,23 @@ package it.integry.integrywmsnative.core.data_store.db.view_model; -import androidx.room.ColumnInfo; - import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; public class ArticoloDTO { - private String codMart; - - private String descrizione; - - private String untMis; - - private String barcode; - - private String flagQtaMultipla; - - private float qtaCnf; - - private float merceDaRic; - - private float mediaSett; - - private float qtaMinOrdinabile; - + public String codMart; + public String descrizione; + public String untMis; + public float qtaCnf; + public String barcode; + public float merceDaRic; + public float mediaSett; + public String flagQtaMultipla; + public String flagTracciabilita; + public float qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; - private float giacenza; - private float qtaPrevistaVendita; - private float qtaProposta; @@ -145,6 +133,24 @@ public class ArticoloDTO { this.qtaProposta = qtaProposta; } + public String getFlagTracciabilita() { + return flagTracciabilita; + } + + public ArticoloDTO setFlagTracciabilita(String flagTracciabilita) { + this.flagTracciabilita = flagTracciabilita; + return this; + } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public ArticoloDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } + public ArticoloGriglia toArticoloGriglia() { ArticoloGriglia result = new ArticoloGriglia(); result.setBarCode(this.getBarCode()); @@ -157,6 +163,7 @@ public class ArticoloDTO { result.setFlagQtaMultipla(this.getFlagQtaMultipla()); result.setQtaMinOrdinabile(this.getQtaMinOrdinabile()); result.setGgScadenza(this.ggScadenza); + result.setNewNoPromo(this.newNoPromo); result.setGiacenza(this.giacenza); result.setQtaPrevistaVendita(this.qtaPrevistaVendita); result.setQtaProposta(this.qtaProposta); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 0528c066..88156b64 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,12 +1,14 @@ package it.integry.integrywmsnative.core.settings; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.List; -import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; -import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; import it.integry.integrywmsnative.core.model.Azienda; import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; +import it.integry.integrywmsnative.core.rest.model.DistribuzioneColloDTO; public class DBSettingsModel { @@ -36,6 +38,8 @@ public class DBSettingsModel { private boolean flagSpedizioneCanSelectMultipleOrders; private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; + private boolean flagOrdinaNuoviArticoliInGriglia; + private JSONObject docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; @@ -72,7 +76,7 @@ public class DBSettingsModel { } public DBSettingsModel setDatiAzienda(Azienda datiAzienda) { - this.datiAzienda = datiAzienda; + this.datiAzienda = datiAzienda; return this; } @@ -247,6 +251,15 @@ public class DBSettingsModel { return this; } + public DBSettingsModel setFlagOrdinaNuoviArticoliInGriglia(boolean flagOrdinaNuoviArticoliInGriglia) { + this.flagOrdinaNuoviArticoliInGriglia = flagOrdinaNuoviArticoliInGriglia; + return this; + } + + public boolean getFlagOrdinaNuoviArticoliInGriglia() { + return this.flagOrdinaNuoviArticoliInGriglia; + } + public String getProduzioneDefaultCodAnag() { return produzioneDefaultCodAnag; } @@ -282,4 +295,13 @@ public class DBSettingsModel { this.notePerditaDocInterni = notePerditaDocInterni; return this; } + + public JSONObject getDocInterniCheckFornitore() { + return docInterniCheckFornitore; + } + + public DBSettingsModel setDocInterniCheckFornitore(JSONObject docInterniCheckFornitore) { + this.docInterniCheckFornitore = docInterniCheckFornitore; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index b32e234f..ade66c88 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -5,6 +5,9 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; +import org.json.JSONException; +import org.json.JSONObject; + import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -270,6 +273,14 @@ public class SettingsManager { .setGestName("PVM") .setSection("DOC_INTERNI") .setKeySection("NOTE_PERDITA")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("ORDINI_A") + .setKeySection("ORDINA_NUOVI_ARTICOLI")); + stbGestSetupList.add(new StbGestSetup() + .setGestName("PVM") + .setSection("DOC_INTERNI") + .setKeySection("CHECK_FORNITORE")); GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { @@ -294,8 +305,15 @@ public class SettingsManager { dbSettingsModelIstance.setFlagSpedizioneCanSelectMultipleOrders(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_SELECT_MULTIPLE_ORDERS", Boolean.class)); dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); - String notePerdita = getValueFromList(list,"DOC_INTERNI","NOTE_PERDITA",String.class); - if (notePerdita != null){ + dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); + String docTypeCheckFornitore = getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class); + try { + dbSettingsModelIstance.setDocInterniCheckFornitore(new JSONObject(docTypeCheckFornitore)); + } catch (JSONException e) { + e.printStackTrace(); + } + String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); + if (notePerdita != null) { dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|"))); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java index 93d47c27..0315d040 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityFocus.java @@ -8,7 +8,8 @@ public class UtilityFocus { public static void focusTextBox(Context context, EditText editTextToFocus) { editTextToFocus.requestFocus(); - + editTextToFocus.setSelectAllOnFocus(true); + editTextToFocus.selectAll(); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editTextToFocus, InputMethodManager.SHOW_IMPLICIT); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java index 349e46c9..9db96088 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/GrigliaAcquistiChildDTO.java @@ -14,6 +14,7 @@ public class GrigliaAcquistiChildDTO { public String flagQtaMultipla; public String flagTracciabilita; public BigDecimal qtaMinOrdinabile; + public boolean newNoPromo; private int ggScadenza; private float giacenza; private float qtaPrevistaVendita; @@ -144,4 +145,13 @@ public class GrigliaAcquistiChildDTO { this.qtaProposta = qtaProposta; return this; } + + public boolean isNewNoPromo() { + return newNoPromo; + } + + public GrigliaAcquistiChildDTO setNewNoPromo(boolean newNoPromo) { + this.newNoPromo = newNoPromo; + return this; + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 6be6f11a..66c9288c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; import java.math.BigDecimal; import java.util.ArrayList; @@ -18,6 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ColloDTO; @@ -35,7 +37,8 @@ public class DocInterniEditFormViewModel { private final DocInterniRESTConsumer docInterniRESTConsumer; private DocInterniEditFormViewModel.Listener listener; private List productsList; - + private boolean isCheckPartitaMag = false; + private JSONObject checkFornitoreRules = null; public MutableLiveData document = new MutableLiveData<>(); public MutableLiveData> docRows = new MutableLiveData<>(); @@ -44,6 +47,7 @@ public class DocInterniEditFormViewModel { this.docInterniRESTConsumer = docInterniRESTConsumer; this.mtbColrRepository = mtbColrRepository; this.mtbColtRepository = mtbColtRepository; + this.checkFornitoreRules = SettingsManager.iDB().getDocInterniCheckFornitore(); this.docRows.setValue(new ArrayList<>()); } @@ -120,7 +124,7 @@ public class DocInterniEditFormViewModel { } SqlMtbColr row = this.getRowForArticolo(articolo); this.sendOnLoadingEnded(); - this.editRow(row, articolo.getFlagTracciabilita().equalsIgnoreCase("S")); + this.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S") && this.isCheckPartitaMag)); } @@ -208,6 +212,26 @@ public class DocInterniEditFormViewModel { public void setDocument(SqlMtbColt document) { this.document.setValue(document); + this.initCheckFornitore(); + } + + private void initCheckFornitore() { + SqlMtbColt doc = this.document.getValue(); + boolean isCheckPartitaMag = false; + if (doc != null && this.checkFornitoreRules != null) { + String key = doc.getCodAnag(); + if (doc.getCodVdes() != null && !doc.getCodVdes().isEmpty()) { + key += "-" + doc.getCodVdes(); + } + try { + if (this.checkFornitoreRules.has(key) && ((String) ((JSONObject) this.checkFornitoreRules.get(key)).get(doc.getCodDtipProvv())).equalsIgnoreCase("check-partitaMag")) { + isCheckPartitaMag = true; + } + } catch (Exception ignored) { + } + + } + this.isCheckPartitaMag = isCheckPartitaMag; } public SqlMtbColt getDocument() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java index febbc9ca..257cfba6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/PVOrdineAcquistoEditActivity.java @@ -12,6 +12,8 @@ import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.LinearLayoutManager; +import com.annimon.stream.Stream; + import java.util.ArrayList; import java.util.List; @@ -32,6 +34,7 @@ import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaReposito import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer; +import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.databinding.ActivityPvOrdineAcquistoEditBinding; @@ -65,7 +68,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { ArticoloGrigliaRepository mArticoloGrigliaRepository; - public static Intent newInstance(Context context, Ordine ordine){ + public static Intent newInstance(Context context, Ordine ordine) { Intent myIntent = new Intent(context, PVOrdineAcquistoEditActivity.class); String keyOrdine = DataCache.addItem(ordine); myIntent.putExtra(DATA_KEY_ORDER, keyOrdine); @@ -110,6 +113,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { .setOnScanFailed(this::handleException)); } + @Override public boolean onSupportNavigateUp() { @@ -159,6 +163,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { private void handleException(Exception ex) { runOnUiThread(() -> { + this.closeProgress(); BarcodeManager.enable(); UtilityExceptions.defaultException(this, ex, false); }); @@ -198,6 +203,32 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { fetchArticoli(); } + private void orderNewProducts() { + this.openProgress(); + mhelper.getNewArticoli(mOrdine.getIdGriglia(), articoli -> { + if (articoli != null && !articoli.isEmpty()) { + List articoliToSave = new ArrayList<>(); + Stream.of(articoli).forEach(articolo -> { + if ( + Stream.of(mArticoli).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + && Stream.of(articoliToSave).filter(x -> x.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirst().isEmpty() + ) { + ArticoloOrdine dto = articolo.convertToArticoloOrdine(mOrdine); + dto.setQtaOrd(dto.getQtaCnf()); + articoliToSave.add(dto); + } + }); + if (!articoliToSave.isEmpty()) { + mhelper.saveArticoliToOrdine(articoliToSave, this::fetchArticoli, this::handleException); + } else { + this.closeProgress(); + } + } else { + this.closeProgress(); + } + }, this::handleException); + } + private void fetchGriglia() { mhelper.loadGriglia(mOrdine.getIdGriglia(), griglia -> { runOnUiThread(() -> { @@ -218,6 +249,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.INVISIBLE : View.GONE); mBinding.closeActivityFab.close(false); mBinding.scanArtSpinner.setVisibility(mArticoli.size() > 0 ? View.GONE : View.VISIBLE); + if (mArticoli.isEmpty() && isOrderNewProdsForced()) { + orderNewProducts(); + } }); }, this::handleException); } @@ -253,9 +287,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { super.onBackPressed(); } - public void manualSearch(){ + public void manualSearch() { BarcodeManager.disable(); - DialogSimpleInputHelper.makeInputDialog(this,"Inserisci il codice a barre/codice articolo da cercare",codice->{ + DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", codice -> { this.openProgress(); mhelper.checkArticolo( mOrdine, @@ -272,4 +306,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity { }, BarcodeManager::enable).show(); } + private boolean isOrderNewProdsForced() { + return SettingsManager.iDB().getFlagOrdinaNuoviArticoliInGriglia(); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java index 54925165..3c99f01e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/dialog/EditArticoloDialog.java @@ -10,6 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.view.inputmethod.EditorInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -27,7 +28,6 @@ import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityExceptions; -import it.integry.integrywmsnative.core.utility.UtilityFocus; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; @@ -53,7 +53,7 @@ public class EditArticoloDialog extends BaseDialogFragment { mArticolo.setValue(articolo); mHelper = helper; qtaOrd.set(BigDecimal.valueOf(articolo.getQtaOrd())); - numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()),0,RoundingMode.CEILING).intValue()); + numCnf.set(BigDecimal.valueOf(articolo.getQtaOrd()).divide(BigDecimal.valueOf(articolo.getQtaCnf()), 0, RoundingMode.CEILING).intValue()); qtaCnf.set(BigDecimal.valueOf(articolo.getQtaCnf())); this.onDialogDismiss = onDialogDismiss; @@ -71,7 +71,7 @@ public class EditArticoloDialog extends BaseDialogFragment { public void onDismiss(@NonNull DialogInterface dialog) { super.onDismiss(dialog); ArticoloOrdine articolo = mArticolo.getValue(); - if (articolo != null && articolo.getQtaOrd() <= 0f){ + if (articolo != null && articolo.getQtaOrd() <= 0f) { articolo = null; } onDialogDismiss.run(articolo); @@ -87,14 +87,12 @@ public class EditArticoloDialog extends BaseDialogFragment { getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); initBindings(); - return mBinding.getRoot(); } @Override public void onStart() { super.onStart(); - UtilityFocus.focusTextBox(mContext, mBinding.inputQtaOrd); } private void initBindings() { @@ -106,17 +104,17 @@ public class EditArticoloDialog extends BaseDialogFragment { ArticoloOrdine articoloOrdine = mArticolo.getValue(); BigDecimal qtaCnf = BigDecimal.valueOf(articoloOrdine.getQtaCnf()); int cnf = 0; - if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0){ + if (qtaOrd.get() != null && qtaOrd.get().compareTo(BigDecimal.ZERO) > 0) { cnf = qtaOrd.get().divide(qtaCnf, 0, RoundingMode.CEILING).intValue(); } - this.numCnf.set( cnf); + this.numCnf.set(cnf); this.mBinding.executePendingBindings(); mLockedInput = false; } }); BindableInteger.registerListener(numCnf, qta -> { - if (!mLockedInput){ + if (!mLockedInput) { mLockedInput = true; ArticoloOrdine articoloOrdine = mArticolo.getValue(); @@ -127,6 +125,22 @@ public class EditArticoloDialog extends BaseDialogFragment { mLockedInput = false; } }); + mBinding.inputQtaOrd.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { +// saveAndExit(); + mBinding.inputNumCnfText.requestFocus(); + return true; + } + return false; + }); + + mBinding.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_DONE) { + saveAndExit(); + return true; + } + return false; + }); } public void saveAndExit() { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java index da003f81..daf89bc9 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordine_acquisto_edit/helper/PVEditOrderHelper.java @@ -2,11 +2,12 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; import java.util.List; +import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; -import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; +import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.expansion.RunnableArgs; @@ -63,7 +64,15 @@ public class PVEditOrderHelper { mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail); } - public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError){ + public void saveArticoliToOrdine(List articoli, Runnable onSave, RunnableArgs onFail) { + mArticoliOrdineRepository.saveArticoliToOrdine(articoli, onSave, onFail); + } + + public void removeArticoloFromOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs onError) { mArticoliOrdineRepository.deleteArticolo(articolo, onSave, onError); } + + public void getNewArticoli(int idGrigla, RunnableArgs> onSuccess, RunnableArgs onError) { + mArticoliGrigliaRepository.findNewArticoliInGrigla(idGrigla, onSuccess, onError); + } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index ba6f7ca1..1de6f0f3 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -29,7 +29,7 @@ public class DialogScanLisA { private BaseDialog mDialog; private Dialog mCurrentProgress; - private DialogScanCodiceGrigliaBinding mBinding; + private final DialogScanCodiceGrigliaBinding mBinding; private RunnableArgs mOnDialogDismiss; @@ -54,6 +54,13 @@ public class DialogScanLisA { mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mOnDialogDismiss = onDialogDismiss; initBarcode(); + + + BarcodeScanDTO fakeScan = new BarcodeScanDTO(); + fakeScan.setStringValue("4AP001"); + onScanSuccessfull.run(fakeScan); + + } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { diff --git a/app/src/main/res/drawable/ic_baseline_alert_24.xml b/app/src/main/res/drawable/ic_baseline_alert_24.xml new file mode 100644 index 00000000..40ad9444 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_alert_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_new_24.xml b/app/src/main/res/drawable/ic_baseline_new_24.xml new file mode 100644 index 00000000..af35c19b --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_new_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_stars_24.xml b/app/src/main/res/drawable/ic_baseline_stars_24.xml new file mode 100644 index 00000000..ecfbeb6f --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_stars_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/dialog_pv_edit_articolo.xml b/app/src/main/res/layout/dialog_pv_edit_articolo.xml index 7ae43a88..32964cca 100644 --- a/app/src/main/res/layout/dialog_pv_edit_articolo.xml +++ b/app/src/main/res/layout/dialog_pv_edit_articolo.xml @@ -7,6 +7,7 @@ + + + + + + + + + + @@ -310,8 +343,7 @@ android:background="@drawable/badge_round_corner" android:backgroundTint="@color/colorPrimary" android:orientation="vertical" - android:padding="8dp" - > + android:padding="8dp"> - - @@ -480,6 +511,7 @@ android:digits="0123456789" android:hint="@string/tot_qty" android:inputType="number" + android:selectAllOnFocus="true" app:binding="@{view.qtaOrd}" /> diff --git a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml index 47c0bf98..572eb7b3 100644 --- a/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml +++ b/app/src/main/res/layout/fragment_pv_articoli_ordine_acquisto__list_single_item.xml @@ -29,15 +29,31 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - + android:orientation="horizontal"> + + + + + + - + @@ -15,132 +16,121 @@ - - + + + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:padding="16dp"> + android:orientation="horizontal"> - + android:text="@string/cod_alis_name" + android:textColor="@android:color/black" + android:layout_marginEnd="8dp" + android:textSize="16sp" /> - - - - - - + tools:text="4SECCO" + android:textColor="@android:color/black" + android:textSize="16sp" + android:textStyle="bold" /> - - - - - - - - - - - - - - - - - - - + tools:text="LISTINO FORMAT CEDI SECCO" + android:textColor="@android:color/black" + android:textSize="14sp" + android:layout_marginStart="4dp" + android:textStyle="italic" /> - + + + + + + + + + + + + + + + + + - > + android:paddingEnd="2dp" /> + android:adjustViewBounds="true" /> + android:text="@string/no_orders_found_message" /> - - + + - - @@ -222,7 +210,7 @@ android:layout_width="0dp" android:layout_height="0dp" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.3"/> + app:layout_constraintGuide_percent="0.3" /> - - + fab:fab_colorRipple="#66FFFFFF" /> \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index a8d9bb89..9c133848 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -375,4 +375,6 @@ Previsione di vendita Giacenza Qtà proposta + giorni + Nuovo articolo in griglia \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a48cef4c..ec6181f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -384,4 +384,6 @@ Sales prediction Stock Suggested Qty + days + Newly added product From 8686df3d8a31f4c3f5a43d4c1e34ff8f7b0f8f49 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Mon, 21 Feb 2022 16:32:04 +0100 Subject: [PATCH 3/6] rimossa ricerca automatica listino creata per test dev --- .../gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 1de6f0f3..66175187 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -56,11 +56,6 @@ public class DialogScanLisA { initBarcode(); - BarcodeScanDTO fakeScan = new BarcodeScanDTO(); - fakeScan.setStringValue("4AP001"); - onScanSuccessfull.run(fakeScan); - - } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { From e1b4af24028aea7906dc167ad86b6b109973c9e3 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 22 Feb 2022 13:14:56 +0100 Subject: [PATCH 4/6] Fix su caricamento JSON di config per i doc interni --- .../core/settings/DBSettingsModel.java | 8 +++----- .../core/settings/SettingsManager.java | 11 ++--------- .../edit_form/DocInterniEditFormActivity.java | 1 + .../edit_form/DocInterniEditFormViewModel.java | 12 +++++++++++- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java index 88156b64..6983010e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/DBSettingsModel.java @@ -1,7 +1,5 @@ package it.integry.integrywmsnative.core.settings; -import org.json.JSONObject; - import java.util.ArrayList; import java.util.List; @@ -39,7 +37,7 @@ public class DBSettingsModel { private List notePerditaDocInterni = new ArrayList<>(); private boolean flagSpedizioneUseQtaOrd; private boolean flagOrdinaNuoviArticoliInGriglia; - private JSONObject docInterniCheckFornitore; + private String docInterniCheckFornitore; private String produzioneDefaultCodAnag; private String reportNameSpedizionChiudiOrdine; private int onNumCnfInputChanged = 1; @@ -296,11 +294,11 @@ public class DBSettingsModel { return this; } - public JSONObject getDocInterniCheckFornitore() { + public String getDocInterniCheckFornitore() { return docInterniCheckFornitore; } - public DBSettingsModel setDocInterniCheckFornitore(JSONObject docInterniCheckFornitore) { + public DBSettingsModel setDocInterniCheckFornitore(String docInterniCheckFornitore) { this.docInterniCheckFornitore = docInterniCheckFornitore; return this; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index ade66c88..6d933ddd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -5,9 +5,6 @@ import android.content.Context; import com.annimon.stream.Stream; import com.google.firebase.perf.metrics.Trace; -import org.json.JSONException; -import org.json.JSONObject; - import java.net.SocketTimeoutException; import java.util.ArrayList; import java.util.Arrays; @@ -306,12 +303,8 @@ public class SettingsManager { dbSettingsModelIstance.setReportNameSpedizionChiudiOrdine(getValueFromList(list, "SPEDIZIONE", "REPORT_PACKING_LIST", String.class)); dbSettingsModelIstance.setFlagSpedizioneUseQtaOrd(getValueFromList(list, "SPEDIZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); - String docTypeCheckFornitore = getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class); - try { - dbSettingsModelIstance.setDocInterniCheckFornitore(new JSONObject(docTypeCheckFornitore)); - } catch (JSONException e) { - e.printStackTrace(); - } + dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); + String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); if (notePerdita != null) { dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|"))); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index e5ceb7f8..01cfd0d5 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -133,6 +133,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter } private void initViewModel(SqlMtbColt document, List productList) { + this.viewModel.init(); this.viewModel.setListeners(this); this.viewModel.setDocument(document); this.viewModel.setProductsList(productList); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 66c9288c..99ea5659 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData; import com.annimon.stream.Stream; import org.apache.commons.lang3.StringUtils; +import org.json.JSONException; import org.json.JSONObject; import java.math.BigDecimal; @@ -47,10 +48,19 @@ public class DocInterniEditFormViewModel { this.docInterniRESTConsumer = docInterniRESTConsumer; this.mtbColrRepository = mtbColrRepository; this.mtbColtRepository = mtbColtRepository; - this.checkFornitoreRules = SettingsManager.iDB().getDocInterniCheckFornitore(); this.docRows.setValue(new ArrayList<>()); } + public void init() { + try { + var docInterniCheckFornitore = SettingsManager.iDB().getDocInterniCheckFornitore(); + this.checkFornitoreRules = docInterniCheckFornitore != null ? new JSONObject(docInterniCheckFornitore) : null; + } catch (JSONException e) { + e.printStackTrace(); + } + } + + private void sendOnLoadingStarted() { if (this.listener != null) listener.onLoadingStarted(); } From 90d5a8d43b483535f3292667f83b688161963f15 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 22 Feb 2022 13:22:17 +0100 Subject: [PATCH 5/6] gestione righe multiple per articolo in documenti itnerni --- .../MainApplicationComponent.java | 7 +- ...logChooseRowFromListaDocRowsListModel.java | 85 +++++++++++ .../edit_form/DocInterniEditFormActivity.java | 11 ++ .../DocInterniEditFormViewModel.java | 55 ++++--- .../DialogSelectDocRowsComponent.java | 16 ++ .../DialogSelectDocRowsModule.java | 9 ++ .../DialogSelectDocRowsView.java | 143 ++++++++++++++++++ .../dialogs/DialogScanLisA.java | 2 - ...se_row_from_lista_doc_rows__item_model.xml | 138 +++++++++++++++++ ..._choose_row_from_lista_doc_rows_layout.xml | 141 +++++++++++++++++ app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 12 files changed, 582 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java create mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java create mode 100644 app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml create mode 100644 app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java index ba20830b..649a8bbb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationComponent.java @@ -15,6 +15,8 @@ import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDo import it.integry.integrywmsnative.gest.contab_doc_interni.dialog.DialogSelectDocInfoModule; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormComponent; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.DocInterniEditFormModule; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsComponent; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsModule; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleComponent; import it.integry.integrywmsnative.gest.contenuto_bancale.ContenutoBancaleModule; import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliComponent; @@ -110,7 +112,8 @@ import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCr DialogChooseArtsFromListaArtsModule.class, DocInterniModule.class, DialogSelectDocInfoModule.class, - DocInterniEditFormModule.class + DocInterniEditFormModule.class, + DialogSelectDocRowsModule.class }) public interface MainApplicationComponent { @@ -182,6 +185,8 @@ public interface MainApplicationComponent { DialogSelectDocInfoComponent.Factory dialogSelectMgrpDtipPairComponent(); + DialogSelectDocRowsComponent.Factory dialogSelectDocRowsComponent(); + DocInterniEditFormComponent.Factory docInterniEditFormComponent(); InfoAggiuntiveLUDialogComponent.Factory infoAggiuntiveLUDialogComponent(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java new file mode 100644 index 00000000..3c48b2fa --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/dto/DialogChooseRowFromListaDocRowsListModel.java @@ -0,0 +1,85 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.dto; + +import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; +import it.integry.integrywmsnative.core.di.BindableBoolean; + +public class DialogChooseRowFromListaDocRowsListModel { + + private String codMart; + private String descrizione; + private String qtaOrdReadable; + private String barcode; + private boolean isNew; + private SqlMtbColr originalModel; + private BindableBoolean checked = new BindableBoolean(false); + + public DialogChooseRowFromListaDocRowsListModel() { + } + + public BindableBoolean getChecked() { + return checked; + } + + public DialogChooseRowFromListaDocRowsListModel setChecked(BindableBoolean checked) { + this.checked = checked; + return this; + } + + public void toggleCheck() { + this.checked.set(!this.checked.get()); + } + + public String getCodMart() { + return codMart; + } + + public DialogChooseRowFromListaDocRowsListModel setCodMart(String codMart) { + this.codMart = codMart; + return this; + } + + public String getDescrizione() { + return descrizione; + } + + public DialogChooseRowFromListaDocRowsListModel setDescrizione(String descrizione) { + this.descrizione = descrizione; + return this; + } + + public String getQtaOrdReadable() { + return qtaOrdReadable; + } + + public DialogChooseRowFromListaDocRowsListModel setQtaOrdReadable(String qtaOrdReadable) { + this.qtaOrdReadable = qtaOrdReadable; + return this; + } + + public String getBarcode() { + return barcode; + } + + public DialogChooseRowFromListaDocRowsListModel setBarcode(String barcode) { + this.barcode = barcode; + return this; + } + + public boolean isNew() { + return isNew; + } + + public DialogChooseRowFromListaDocRowsListModel setNew(boolean aNew) { + isNew = aNew; + return this; + } + + public SqlMtbColr getOriginalModel() { + return originalModel; + } + + public DialogChooseRowFromListaDocRowsListModel setOriginalModel(SqlMtbColr originalModel) { + this.originalModel = originalModel; + return this; + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java index 01cfd0d5..e4fd6074 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormActivity.java @@ -39,6 +39,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.databinding.ActivityContabDocInterniEditBinding; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiChildDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; +import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows.DialogSelectDocRowsView; import it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.ui.DocumentRowsListAdapter; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView; @@ -281,6 +282,16 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter this.viewModel.deleteRow(entityToSql(mtbColr)); } + @Override + public void onMultipleRowsFound(List rows, GrigliaAcquistiChildDTO articolo) { + DialogSelectDocRowsView.newInstance(rows, (row) -> { + this.onLoadingEnded(); + if (row != null) { + this.viewModel.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); + } + } + ).show(this.getSupportFragmentManager(), "dialogSelectDocRows"); + } private MtbColr sqlToEntity(SqlMtbColr sqlMtbColr) { MtbColr entity = new MtbColr(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java index 99ea5659..72abc9d4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/DocInterniEditFormViewModel.java @@ -85,7 +85,7 @@ public class DocInterniEditFormViewModel { } public void editRow(SqlMtbColr row, boolean flagTracciabilita) { - this.listener.onEditRowRequest(row, flagTracciabilita); + this.listener.onEditRowRequest(row, flagTracciabilita && this.isCheckPartitaMag); } private Integer getNextIdRiga() { @@ -127,41 +127,46 @@ public class DocInterniEditFormViewModel { public void onSearch(String search) { this.sendOnLoadingStarted(); GrigliaAcquistiChildDTO articolo = this.searchArticolo(search); + this.sendOnLoadingEnded(); if (articolo == null) { this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); - this.sendOnLoadingEnded(); return; } - SqlMtbColr row = this.getRowForArticolo(articolo); - this.sendOnLoadingEnded(); - this.editRow(row, (articolo.getFlagTracciabilita().equalsIgnoreCase("S") && this.isCheckPartitaMag)); + List rows = this.getRowsForArticolo(articolo); + if (rows.isEmpty()) { + this.sendError(new Exception("Nessun articolo corrispondente al codice fornito!")); + } + if (rows.size() > 1) { + this.listener.onMultipleRowsFound(rows, articolo); + } else { + this.editRow(rows.get(0), (articolo.getFlagTracciabilita().equalsIgnoreCase("S"))); + } } - private SqlMtbColr getRowForArticolo(GrigliaAcquistiChildDTO articolo) { + private List getRowsForArticolo(GrigliaAcquistiChildDTO articolo) { List docRows = this.docRows.getValue(); if (docRows == null) { docRows = new ArrayList<>(); } SqlMtbColt document = this.document.getValue(); - SqlMtbColr row = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).findFirstOrElse(null); - if (row == null) { - row = new SqlMtbColr(); - row.setIdCollo(document.getId()); - row.setRiga(getNextIdRiga()); - row.setCodMart(articolo.getCodMart()); - row.setSerCollo(document.getSerCollo()); - row.setGestione(document.getGestione()); - row.setNumCollo(document.getNumCollo()); - row.setDataCollo(document.getDataCollo()); - row.setDescrizione(articolo.getDescrizione()); - row.setUntMis(articolo.getUntMis()); - row.setCodBarre(articolo.getBarcode()); - row.setQtaCnf(articolo.getQtaCnf().floatValue()); - row.setNumCnf(0f); - row.setQtaCol(0f); - } - return row; + SqlMtbColr row = new SqlMtbColr(); + row.setIdCollo(document.getId()); + row.setRiga(getNextIdRiga()); + row.setCodMart(articolo.getCodMart()); + row.setSerCollo(document.getSerCollo()); + row.setGestione(document.getGestione()); + row.setNumCollo(document.getNumCollo()); + row.setDataCollo(document.getDataCollo()); + row.setDescrizione(articolo.getDescrizione()); + row.setUntMis(articolo.getUntMis()); + row.setCodBarre(articolo.getBarcode()); + row.setQtaCnf(articolo.getQtaCnf().floatValue()); + row.setNumCnf(0f); + row.setQtaCol(0f); + List rows = Stream.of(docRows).filter(docRow -> docRow.getCodMart().equalsIgnoreCase(articolo.getCodMart())).toList(); + rows.add(row); + return rows; } private GrigliaAcquistiChildDTO searchArticolo(String filter) { @@ -304,6 +309,8 @@ public class DocInterniEditFormViewModel { void onEditRowRequest(SqlMtbColr row, boolean flagTracciabilita); + void onMultipleRowsFound(List rows, GrigliaAcquistiChildDTO articolo); + void onDocumentHoldRequest(); void onDocExported(); diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java new file mode 100644 index 00000000..29bb8f1c --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsComponent.java @@ -0,0 +1,16 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import dagger.Subcomponent; + +@Subcomponent +public interface DialogSelectDocRowsComponent { + + @Subcomponent.Factory + interface Factory { + DialogSelectDocRowsComponent create(); + } + + + void inject(DialogSelectDocRowsView dialogSelectDocInfoView); + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java new file mode 100644 index 00000000..499da135 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsModule.java @@ -0,0 +1,9 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import dagger.Module; + +@Module(subcomponents = DialogSelectDocRowsComponent.class) +public class DialogSelectDocRowsModule { + + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java new file mode 100644 index 00000000..4da76842 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/gest/contab_doc_interni/edit_form/dialog/selectDocRows/DialogSelectDocRowsView.java @@ -0,0 +1,143 @@ +package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form.dialog.selectDocRows; + +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.databinding.DataBindingUtil; +import androidx.lifecycle.MutableLiveData; + +import com.annimon.stream.Stream; +import com.ravikoradiya.liveadapter.LiveAdapter; + +import java.util.List; + +import it.integry.integrywmsnative.BR; +import it.integry.integrywmsnative.MainApplication; +import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; +import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; +import it.integry.integrywmsnative.core.expansion.RunnableArgs; +import it.integry.integrywmsnative.databinding.DialogChooseRowFromListaDocRowsLayoutBinding; +import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DialogChooseRowFromListaDocRowsListModel; +import kotlin.Unit; + +public class DialogSelectDocRowsView extends BaseDialogFragment { + + private final RunnableArgs onRowSelected; + private final List listArts; + private final MutableLiveData> listModels = new MutableLiveData<>(); + private DialogChooseRowFromListaDocRowsLayoutBinding binding; + public MutableLiveData selectedRow = new MutableLiveData<>(); + + public static DialogSelectDocRowsView newInstance( + List listArts, + RunnableArgs onDismiss + ) { + return new DialogSelectDocRowsView(listArts, onDismiss); + } + + + private DialogSelectDocRowsView(List listArts, RunnableArgs onDismiss) { + super(); + this.onRowSelected = onDismiss; + this.listArts = listArts; + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + if (onRowSelected != null) onRowSelected.run(this.selectedRow.getValue()); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_row_from_lista_doc_rows_layout, container, false); + binding.setLifecycleOwner(this); + MainApplication + .appComponent + .dialogSelectDocRowsComponent() + .create() + .inject(this); + binding.setView(this); + + getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + initView(); + this.refreshList(); + + + binding.positiveButton.setOnClickListener(view -> { + getDialog().dismiss(); + }); + + binding.negativeButton.setOnClickListener(view -> { + this.selectedRow.setValue(null); + getDialog().dismiss(); + }); + + + this.onLoadingEnded(); + return binding.getRoot(); + } + + private void refreshList() { + var list = Stream.of(this.listArts).map(row -> { + DialogChooseRowFromListaDocRowsListModel model = new DialogChooseRowFromListaDocRowsListModel(); + model.setCodMart(row.getCodMart()); + model.setBarcode(row.getCodMart()); + model.setOriginalModel(row); + model.setNew(row.getId() < 1); + model.setDescrizione(row.getDescrizione()); + model.setQtaOrdReadable(row.getQtaCol() + "\n" + row.getUntMis()); + model.getChecked().addOnPropertyChangedCallback(() -> { + this.checkRow(row, model.getChecked().get()); + }); + return model; + }).toList(); + this.listModels.postValue(list); + + } + + private void checkRow(SqlMtbColr row, boolean checked) { + if (checked) { + this.selectedRow.setValue(row); + var models = this.listModels.getValue(); + if (models != null && !models.isEmpty()) { + Stream.of(models).filter(model -> model.getOriginalModel().getId() != row.getId()).forEach(model -> { + model.getChecked().set(false); + }); + } + } else { + var selectedRow = this.selectedRow.getValue(); + if (selectedRow != null && selectedRow.getId() == row.getId()) { + this.selectedRow.setValue(null); + } + } + } + + private void initView() { + initArrayAdapters(); + } + + private void initArrayAdapters() { + + new LiveAdapter(listModels, getViewLifecycleOwner(), BR.row) + .map(DialogChooseRowFromListaDocRowsListModel.class, R.layout.dialog_choose_row_from_lista_doc_rows__item_model) + .onNoData(noData -> { + binding.emptyView.setVisibility(noData ? View.VISIBLE : View.GONE); + return Unit.INSTANCE; + } + ).into(binding.listaDocRows); + + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java index 66175187..acd93cac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/pv_ordini_acquisto/dialogs/DialogScanLisA.java @@ -55,7 +55,6 @@ public class DialogScanLisA { mOnDialogDismiss = onDialogDismiss; initBarcode(); - } public static Dialog make(Activity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs onDialogDismiss) { @@ -77,7 +76,6 @@ public class DialogScanLisA { }); } - private final RunnableArgs onScanSuccessfull = data -> { BarcodeManager.disable(); diff --git a/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml new file mode 100644 index 00000000..4b389296 --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows__item_model.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml new file mode 100644 index 00000000..c738e70c --- /dev/null +++ b/app/src/main/res/layout/dialog_choose_row_from_lista_doc_rows_layout.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 9c133848..b3c8e888 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -377,4 +377,5 @@ Qtà proposta giorni Nuovo articolo in griglia + Seleziona la riga da modificare \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec6181f2..2088df9c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -386,4 +386,5 @@ Suggested Qty days Newly added product + Select document row to edit From f1c25a3673ac9a0eb3aa6263869eee730a7bde78 Mon Sep 17 00:00:00 2001 From: ValerioC Date: Tue, 22 Feb 2022 13:23:18 +0100 Subject: [PATCH 6/6] -> v1.23.5 (260) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3739f44d..857ce962 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 259 - def appVersionName = '1.23.4' + def appVersionCode = 260 + def appVersionName = '1.23.5' signingConfigs { release {