Compare commits

...

35 Commits

Author SHA1 Message Date
79add4f60a Finish v1.31.1(335) 2023-02-14 12:20:17 +01:00
975763f400 -> v1.31.1 (335) 2023-02-14 12:20:11 +01:00
5eac3f14cc BugFix Picking da ordine: errore in caso di lista commesse vuota 2023-02-14 12:19:16 +01:00
bed5b36ade Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
7678ce1a50 Finish v1.31.0(334) 2023-02-14 11:42:10 +01:00
b3faf38455 -> v1.31.0 (334) 2023-02-14 11:42:05 +01:00
283cb59d42 rimosse configurazioni di esecuzione non utilizzate e corretta gestione setup 2023-02-14 11:41:05 +01:00
1867ac8742 Rimossa parte delle dynamic feature 2023-02-14 11:13:10 +01:00
d210e3b3e0 Rimossa parte delle dynamic feature 2023-02-14 11:00:33 +01:00
8bb2f48090 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
15b4d728e6 Finish v1.30.15(333) 2023-02-13 17:48:27 +01:00
3018123110 -> v1.30.15 (333) 2023-02-13 17:48:01 +01:00
b02eaf02a8 aggiornamento progetto a AGP 8.1 2023-02-13 17:46:57 +01:00
ad9795a3a3 test compilazione jenkins con desugaring 2023-02-13 14:25:56 +01:00
170411383f Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
9e87130d6c Finish v1.30.14(332) 2023-02-13 13:09:26 +01:00
0f6a9cdae2 -> v1.30.14 (332) 2023-02-13 13:09:20 +01:00
79ec6430f6 implementata libreria compatibilità LocalDate 2023-02-13 13:08:09 +01:00
0c46fb09c1 Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
8aad7337bf Finish v1.30.13(331) 2023-02-13 11:59:27 +01:00
c49197d002 -> v1.30.13 (331) 2023-02-13 11:59:20 +01:00
16f611c147 Merge branch 'master' into develop 2023-02-13 11:56:18 +01:00
7b623913d8 Aggiunto controllo in avvio chiamate rest per evitare che i terminali con android inferiore all'8.0 2023-02-13 11:56:03 +01:00
0a8997f30b Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
702d0a7348 Finish v1.30.12(330)#2 2023-02-09 12:09:36 +01:00
f4ae1fbed3 -> v1.30.12 (330) #2 2023-02-09 12:09:29 +01:00
8c0639be9b Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
c9ea13a1d2 Finish v1.30.12(330) 2023-02-09 12:08:34 +01:00
bef5423a06 -> v1.30.12 (330) 2023-02-09 12:08:28 +01:00
22b072aff7 Fix su nessun elemento selezionato in DialogChooseArtsFromMtbColrList 2023-02-09 12:07:50 +01:00
50acee47e9 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
ba041d1133 Finish v1.30.11(329) 2023-02-08 17:29:03 +01:00
21c26ab3ad -> v1.30.11 (329) 2023-02-08 17:28:55 +01:00
5288ad8bb0 Fix su qta inviate al magazzino automatico 2023-02-08 17:15:47 +01:00
0ccff458f7 Finish v1.30.10(328) 2023-02-08 10:56:46 +01:00
58 changed files with 145 additions and 2125 deletions

6
.idea/kotlinc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.0" />
</component>
</project>

View File

@@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_base" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS.app" />
<configuration default="false" name="app" type="AndroidRunConfigurationType" factoryName="Android App">
<module name="WMS.app.main" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
@@ -8,13 +8,12 @@
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic_vgalimenti" />
<option name="CLEAR_APP_STORAGE" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base,WMS.dynamic_vgalimenti" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
@@ -46,7 +45,7 @@
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Callstack Sample" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Java/Kotlin Method Sample (legacy)" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>

View File

@@ -1,61 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="app_vglimenti" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
<module name="WMS.app" />
<option name="DEPLOY" value="true" />
<option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
<option name="DEPLOY_AS_INSTANT" value="false" />
<option name="ARTIFACT_NAME" value="" />
<option name="PM_INSTALL_OPTIONS" value="" />
<option name="ALL_USERS" value="false" />
<option name="ALWAYS_INSTALL_WITH_PM" value="false" />
<option name="DYNAMIC_FEATURES_DISABLED_LIST" value="WMS.dynamic__base" />
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
<option name="MODE" value="default_activity" />
<option name="CLEAR_LOGCAT" value="true" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
<option name="FORCE_STOP_RUNNING_APP" value="true" />
<option name="INSPECTION_WITHOUT_ACTIVITY_RESTART" value="false" />
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
<option name="DEBUGGER_TYPE" value="Auto" />
<Auto>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Auto>
<Hybrid>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Hybrid>
<Java />
<Native>
<option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
<option name="SHOW_STATIC_VARS" value="true" />
<option name="WORKING_DIR" value="" />
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
<option name="SHOW_OPTIMIZED_WARNING" value="true" />
</Native>
<Profilers>
<option name="ADVANCED_PROFILING_ENABLED" value="false" />
<option name="STARTUP_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
<option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Callstack Sample" />
<option name="STARTUP_NATIVE_MEMORY_PROFILING_ENABLED" value="false" />
<option name="NATIVE_MEMORY_SAMPLE_RATE_BYTES" value="2048" />
</Profilers>
<option name="DEEP_LINK" value="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="SEARCH_ACTIVITY_IN_GLOBAL_SCOPE" value="false" />
<option name="SKIP_ACTIVITY_VALIDATION" value="false" />
<method v="2">
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 328
def appVersionName = '1.30.10'
def appVersionCode = 335
def appVersionName = '1.31.1'
signingConfigs {
release {
@@ -62,11 +62,12 @@ android {
}
android.buildFeatures.dataBinding true
android.buildFeatures.buildConfig true
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
//coreLibraryDesugaringEnabled true
coreLibraryDesugaringEnabled true
}
productFlavors {
@@ -85,9 +86,6 @@ android {
options.compilerArgs << "-Xmaxerrs" << "10000"
}
}
dynamicFeatures = [":dynamic__base", ":dynamic_vgalimenti"]
lint {
abortOnError false
}
@@ -97,6 +95,7 @@ android {
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0', {
exclude group: 'com.android.support', module: 'support-annotations'
@@ -115,7 +114,7 @@ dependencies {
implementation 'com.google.android.gms:play-services-basement:18.1.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
@@ -188,7 +187,6 @@ dependencies {
// RxJava is also required.
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
}
repositories {

View File

@@ -1,29 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import java.util.HashMap;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
public class BaseCustomConfiguration implements ICustomConfiguration {
public static class Keys {
public static int FLAG_SHOW_COD_FORN_IN_SPEDIZIONE = 1;
public static int CUSTOM_DYNAMIC_VERSION_PATH = 2;
public static int FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC = 3;
}
protected HashMap<Integer, Object> configurations = new HashMap<>() {{
put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, true);
put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, false);
}};
@Override
public <T> T getConfig(int key) {
return UtilityHashMap.getValue(configurations, key);
}
}

View File

@@ -1,84 +0,0 @@
package it.integry.integrywmsnative.core.class_router;
import android.content.Context;
import android.util.Pair;
import java.util.ArrayList;
import java.util.List;
public class ClassRouter {
public enum PATH {
FILTRO_ORDINI_VENDITA,
ORDINI_VENDITA,
CUSTOM_CONFIGURATION,
BARCODE_CUSTOMIZATION
}
private static Context context;
private static List<Pair<PATH, Object>> mRouteClasses = new ArrayList<>();
public static void init() {
// ClassRouter.context = context;
}
private static boolean checkIClassExists(PATH path) {
boolean methodAlreadyDeclared = false;
for(int i = 0; i < mRouteClasses.size() && !methodAlreadyDeclared; i++) {
if(mRouteClasses.get(i).first == path) methodAlreadyDeclared = true;
}
return methodAlreadyDeclared;
}
private static int getClassIndex(PATH path) {
for(int i = 0; i < mRouteClasses.size(); i++) {
if(mRouteClasses.get(i).first == path) return i;
}
return -1;
}
public static void registerPath(PATH path, Class clazz) {
if(checkIClassExists(path)) {
//throw new MethodPathAlreadyDeclaredException(path);
}
try {
mRouteClasses.add(new Pair<>(path, clazz.newInstance()));
} catch (IllegalAccessException | InstantiationException e) {
e.printStackTrace();
}
}
public static void deregisterPath(PATH path) {
if(checkIClassExists(path)) {
mRouteClasses.remove(getClassIndex(path));
}
}
public static <T> T getInstance(PATH path) {
try {
if (!checkIClassExists(path)) {
// throw new MethodPathNotRegisteredException(path);
}
Object instance = mRouteClasses.get(getClassIndex(path)).second;
return (T)instance;
} catch (Exception ex) {
// UtilityExceptions.defaultException(null, ex, true);
}
return null;
}
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.exceptions;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
public class MethodPathNotRegisteredException extends Exception {
public MethodPathNotRegisteredException(ClassRouter.PATH path) {
super(String.format("Path %s is not registered", path.toString()));
}
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IBarcodeCustomization {
boolean shouldForceToEan13(String barcode);
}

View File

@@ -1,7 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface ICustomConfiguration {
<T>T getConfig(int key);
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
public interface IFiltroOrdiniVendita {
boolean shoudShowCodMdepFilter();
boolean shoudShowIdViaggioFilter();
boolean shoudShowAgenteFilter();
}

View File

@@ -1,11 +0,0 @@
package it.integry.integrywmsnative.core.class_router.interfaces;
import java.util.List;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public interface OrdiniVenditaInterface {
boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini);
}

View File

@@ -6,13 +6,11 @@ import android.text.SpannableString;
import android.text.Spanned;
import android.text.SpannedString;
import java.lang.reflect.Method;
import java.net.ConnectException;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
@@ -44,8 +42,7 @@ public class MainContext {
this.initDBData(() -> {
this.initMenu(() -> {
this.initReflections();
if (mListener != null) mListener.onContextInitialized();
});
});
@@ -103,30 +100,6 @@ public class MainContext {
});
}
private void initReflections() {
ClassRouter.init();
try {
String initMethod = "init";
Class dynamicContextClass = Class.forName("it.integry.wms.dynamic_customization.DynamicContext");
Method[] methods = dynamicContextClass.getMethods();
for (Method m : methods) {
if (initMethod.equals(m.getName())) {
// for static methods we can use null as instance of class
final Object newInstance = dynamicContextClass.newInstance();
m.invoke(newInstance, applicationContext);
break;
}
}
} catch (Exception e) {
// UtilityExceptions.defaultException(mContext, e, true);
}
}
public MainContext setListener(Listener listener) {
this.mListener = listener;

View File

@@ -59,20 +59,17 @@ public class RESTBuilder {
String endpoint = "http://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
Gson gson = new GsonBuilder()
.setDateFormat("dd/MM/yyyy HH:mm:ss")
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.registerTypeAdapter(LocalDate.class, new LocalDateDeserializer())
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeDeserializer())
.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer())
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.create();
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(endpoint)
.client(client)
.build();
Retrofit retrofit = new Retrofit.Builder().addConverterFactory(GsonConverterFactory.create(gson)).baseUrl(endpoint).client(client).build();
return retrofit.create(service);
}

View File

@@ -3,8 +3,6 @@ package it.integry.integrywmsnative.core.rest.consumers;
import javax.inject.Singleton;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.IBarcodeCustomization;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
@@ -18,15 +16,6 @@ public class BarcodeRESTConsumer extends _BaseRESTConsumer {
public void decodeEan128(BarcodeScanDTO barcodeObj, RunnableArgs<Ean128Model> onComplete, RunnableArgs<Exception> onFailed) {
IBarcodeCustomization barcodeCustomization = ClassRouter.getInstance(ClassRouter.PATH.BARCODE_CUSTOMIZATION);
if (barcodeCustomization != null && barcodeCustomization.shouldForceToEan13(barcodeObj.getStringValue())) {
Ean128Model ean128Model = new Ean128Model();
ean128Model.Gtin = barcodeObj.getStringValue();
onComplete.run(ean128Model);
return;
}
String ean128 = barcodeObj.getStringValue().replaceAll("" + ((char) 29), "|");
BarcodeRESTConsumerService barcodeRESTConsumerService = RESTBuilder.getService(BarcodeRESTConsumerService.class);

View File

@@ -5,7 +5,6 @@ import it.integry.integrywmsnative.core.model.MtbColt;
public class CloseUDSRequestDTO {
private boolean printSSCC;
private boolean enableTransferLogic;
private String orderCodMdep;
private MtbColt mtbColt;
@@ -18,15 +17,6 @@ public class CloseUDSRequestDTO {
return this;
}
public boolean isEnableTransferLogic() {
return enableTransferLogic;
}
public CloseUDSRequestDTO setEnableTransferLogic(boolean enableTransferLogic) {
this.enableTransferLogic = enableTransferLogic;
return this;
}
public String getOrderCodMdep() {
return orderCodMdep;
}

View File

@@ -53,6 +53,9 @@ public class DBSettingsModel {
private String codDtipOrdTrasfV;
private boolean notifyLotStatus = false;
private boolean groupShippingByCommodityGroup = true;
private boolean showCodFornSpedizione = true;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
}
@@ -386,4 +389,22 @@ public class DBSettingsModel {
this.notifyLotStatus = notifyLotStatus;
return this;
}
public boolean isGroupShippingByCommodityGroup() {
return groupShippingByCommodityGroup;
}
public DBSettingsModel setGroupShippingByCommodityGroup(boolean groupShippingByCommodityGroup) {
this.groupShippingByCommodityGroup = groupShippingByCommodityGroup;
return this;
}
public boolean isShowCodFornSpedizione() {
return showCodFornSpedizione;
}
public DBSettingsModel setShowCodFornSpedizione(boolean showCodFornSpedizione) {
this.showCodFornSpedizione = showCodFornSpedizione;
return this;
}
}

View File

@@ -341,6 +341,14 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_NOTIFICA_STATO_PARTITA"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_SHOW_COD_FORN"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_GROUP_BY_GRP_MERC"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
@@ -372,6 +380,8 @@ public class SettingsManager {
dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class));
dbSettingsModelIstance.setCodDtipOrdTrasfV(getValueFromList(list, "SPEDIZIONE", "COD_DTIP_ORD_TRASF", String.class));
dbSettingsModelIstance.setNotifyLotStatus(getValueFromList(list, "SPEDIZIONE", "FLAG_NOTIFICA_STATO_PARTITA", Boolean.class));
dbSettingsModelIstance.setShowCodFornSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_SHOW_COD_FORN", Boolean.class, Boolean.TRUE));
dbSettingsModelIstance.setGroupShippingByCommodityGroup(getValueFromList(list, "SPEDIZIONE", "FLAG_GROUP_BY_GRP_MERC", Boolean.class, Boolean.FALSE));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null)
@@ -392,6 +402,10 @@ public class SettingsManager {
public static <T> T getValueFromList(List<StbGestSetup> stbGestSetupList, String section, String keySectionName, Class<T> clazz) {
return getValueFromList(stbGestSetupList, section, keySectionName, clazz, null);
}
public static <T> T getValueFromList(List<StbGestSetup> stbGestSetupList, String section, String keySectionName, Class<T> clazz, T defaultValue) {
StbGestSetup value = Stream.of(stbGestSetupList)
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
@@ -403,7 +417,7 @@ public class SettingsManager {
return clazz.cast("S".equalsIgnoreCase(value.getValue()));
} else if (clazz == Integer.class && value.getValue() != null) {
return clazz.cast(Integer.parseInt(value.getValue()));
} else return null;
} else return defaultValue;
}

View File

@@ -15,9 +15,6 @@ import java.io.File;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.FileDownloader;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
@@ -30,19 +27,9 @@ public class UpdatesManager {
public void init(AppCompatActivity activityContext) {
this.mContext = activityContext;
String suffix;
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
try {
suffix = customConfiguration.getConfig(BaseCustomConfiguration.Keys.CUSTOM_DYNAMIC_VERSION_PATH);
if (suffix == null) {
suffix = "";
}
} catch (Exception e) {
suffix = "";
}
String currentVersionUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion";
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release" + suffix + ".apk";
String currentDownloadUrl = "http://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release.apk";
AppUpdater appUpdater = new AppUpdater(mContext)

View File

@@ -43,10 +43,10 @@ public class UtilityDate {
public static final String DMY_HUMAN_LONG = "dd MMMM yyyy";
}
public static Date recognizeDateWithExceptionHandler(String dateString) {
try{
public static Date recognizeDateWithExceptionHandler(String dateString) {
try {
return UtilityDate.recognizeDate(dateString);
} catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex){
} catch (ParseException | DateNotRecognizedException | TimeNotRecognizedException pex) {
UtilityLogger.error(pex);
return null;
}
@@ -64,9 +64,9 @@ public class UtilityDate {
char dateSeparator;
String onlyDateSubstring = dateString.substring(0, 10);
if(onlyDateSubstring.contains("/")) dateSeparator = '/';
else if(onlyDateSubstring.contains("-")) dateSeparator = '-';
else if(onlyDateSubstring.contains(".")) dateSeparator = '.';
if (onlyDateSubstring.contains("/")) dateSeparator = '/';
else if (onlyDateSubstring.contains("-")) dateSeparator = '-';
else if (onlyDateSubstring.contains(".")) dateSeparator = '.';
else throw new DateNotRecognizedException(dateString);
String dateFormatString = (dateString.charAt(2) == dateSeparator)
@@ -74,13 +74,13 @@ public class UtilityDate {
: "yyyy" + dateSeparator + "MM" + dateSeparator + "dd";
if(dateString.length() > 10){
if (dateString.length() > 10) {
char timeSeparator;
String onlyTimeSubstring = dateString.substring(10, 14);
if(onlyTimeSubstring.contains("-")) timeSeparator = '-';
else if(onlyTimeSubstring.contains(":")) timeSeparator = ':';
if (onlyTimeSubstring.contains("-")) timeSeparator = '-';
else if (onlyTimeSubstring.contains(":")) timeSeparator = ':';
else throw new TimeNotRecognizedException(dateString);
String timeFormatString = "HH" + timeSeparator + "mm" + timeSeparator + "ss";
@@ -99,12 +99,11 @@ public class UtilityDate {
public static String formatDate(Date dateToFormat, String format) {
if(dateToFormat != null) {
if (dateToFormat != null) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
//sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
return sdf.format(dateToFormat);
}
else return null;
} else return null;
}
@@ -116,7 +115,7 @@ public class UtilityDate {
public static Date getDateInstance(boolean removeTime) {
var calendar = getCalendarInstance();
if(removeTime) {
if (removeTime) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
@@ -131,8 +130,6 @@ public class UtilityDate {
}
public static String formatDate(LocalDate dateToFormat, String format) {
if (dateToFormat != null) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
@@ -185,7 +182,6 @@ public class UtilityDate {
}
public static LocalDate getNow() {
return Instant.now()
.atZone(currentZone)
@@ -197,6 +193,7 @@ public class UtilityDate {
.atZone(currentZone)
.toLocalDateTime();
}
public static LocalDate timeToLocalDate(long time, @Nullable String timezone) {
return Instant.ofEpochSecond(time)
.atZone(timezone == null ? currentZone : ZoneId.of(timezone))
@@ -210,7 +207,6 @@ public class UtilityDate {
}
public static long localDateTimeToTime(LocalDateTime localDateTime, @Nullable String timezone) {
return localDateTime
.atZone(timezone == null ? currentZone : ZoneId.of(timezone))

View File

@@ -335,13 +335,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.action_filter:
showOrderByDialog();
return true;
default:
return super.onOptionsItemSelected(item);
if (item.getItemId() == R.id.action_filter) {
showOrderByDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
private void initVars() {
@@ -752,11 +750,11 @@ public class AccettazionePickingActivity extends BaseActivity implements Accetta
public void onLUPrintError(Exception ex, Runnable onComplete) {
this.onLoadingEnded();
DialogSimpleMessageView.makeErrorDialog(
new SpannableString(ex.getMessage()),
null,
null,
R.string.button_ignore_print,
onComplete)
new SpannableString(ex.getMessage()),
null,
null,
R.string.button_ignore_print,
onComplete)
.show(getSupportFragmentManager(), "tag");
}

View File

@@ -27,10 +27,8 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
@@ -181,23 +179,16 @@ public class MainActivity extends BaseActivity
fragment = menuItem.getFragmentFactory().run();
this.adaptViewToFragment(fragment);
} else {
switch (id) {
case R.id.nav_home:
this.pop();
break;
case R.id.nav_settings:
fragment = new MainSettingsFragment();
this.adaptViewToFragment(fragment);
break;
case R.id.nav_logout:
ServerStatusChecker.dispose();
this.mainContext.logout(() -> {
startLoginActivity();
});
break;
if (id == R.id.nav_home) {
this.pop();
} else if (id == R.id.nav_settings) {
fragment = new MainSettingsFragment();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_logout) {
ServerStatusChecker.dispose();
this.mainContext.logout(() -> {
startLoginActivity();
});
}
}
@@ -226,7 +217,7 @@ public class MainActivity extends BaseActivity
for (MenuConfiguration.MenuItem menuItem : menuGroup.getItems()) {
if(menuService.isItemEnabled(menuItem)) {
if (menuService.isItemEnabled(menuItem)) {
subMenu
.add(menuGroup.getGroupId(), menuItem.getID(), 0, menuItem.getTitleText())
.setIcon(menuItem.getDrawerIcon());
@@ -248,7 +239,6 @@ public class MainActivity extends BaseActivity
}
private MenuConfiguration.MenuItem getMenuItem(@IdRes int menuId) {
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
BaseMenuConfiguration menuConfiguration = new MenuConfiguration();
List<MenuConfiguration.MenuGroup> menuGroups = menuConfiguration.getGroups();

View File

@@ -27,10 +27,8 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.core.class_router.configs.MenuConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverDTO;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -212,14 +210,10 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
(recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA ||
recoveredMtbColt.getGestioneEnum() == GestioneEnum.LAVORAZIONE)) {
OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
boolean isTransferLogicEnabled = ordiniVendita != null && ordiniVendita.isTrasfOrder(recoveredMtbColtDto.getTestateOrdini());
var closeUDSRequestDto = new CloseUDSRequestDTO()
.setMtbColt(recoveredMtbColt)
//.setPrintSSCC(shouldPrint)
.setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep())
.setEnableTransferLogic(isTransferLogicEnabled);
.setOrderCodMdep(recoveredMtbColtDto.getTestateOrdini().get(0).getCodMdep());
RunnableArgs<CloseUDSResponseDTO> onRequestComplete = closeUDSResponseDto -> {
colliDataRecoverService.closeSession(recoveredMtbColtID);

View File

@@ -915,8 +915,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
}
private void initJtbComtCache(Runnable onComplete) {
if (this.mViewModel.getOrderList().getValue() == null) {
this.jtbComtCache = new ArrayList<>();
@@ -925,8 +923,15 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
}
var jtbComts = Stream.of(Objects.requireNonNull(this.mViewModel.getOrderList().getValue()))
.flatMap(x -> Stream.of(x.getCodJcom()))
.distinct().withoutNulls()
.toList();
if (jtbComts.isEmpty()) {
this.jtbComtCache = new ArrayList<>();
onComplete.run();
return;
}
this.mCommessaRESTConsumer.getJtbComts(jtbComts, jtbComtCache -> {
this.jtbComtCache = jtbComtCache;
onComplete.run();

View File

@@ -1,459 +0,0 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
import android.app.DatePickerDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.DialogVenditaFiltroAvanzatoBinding;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
public class DialogVenditaFiltroAvanzatoView {
private final AlertDialog currentAlert;
private final Context currentContext;
private final RunnableArgs<DialogVenditaFiltroAvanzatoViewModel> currentOnFilterDone;
public BindableString deposito = new BindableString();
public BindableString idViaggio = new BindableString();
public BindableString numOrds = new BindableString();
public BindableString cliente = new BindableString();
public BindableString dataConsegna = new BindableString();
public BindableString terminiConsegna = new BindableString();
public BindableString agente = new BindableString();
public BindableString vettore = new BindableString();
public BindableString automezzo = new BindableString();
public BindableString paese = new BindableString();
public Date dataConsegnaDate;
private ArrayAdapter<String> arrayAdapterCodMdep;
private ArrayAdapter<String> arrayAdapterIdViaggio;
private ArrayAdapter<String> arrayAdapterNumOrds;
private ArrayAdapter<String> arrayAdapterCliente;
private ArrayAdapter<String> arrayAdapterTermCons;
private ArrayAdapter<String> arrayAdapterVettore;
private ArrayAdapter<String> arrayAdapterAgente;
private ArrayAdapter<String> arrayAdapterAutomezzo;
private ArrayAdapter<String> arrayAdapterPaese;
private final DialogVenditaFiltroAvanzatoViewModel viewModel;
public static AlertDialog make(final Context context,
final List<OrdiniUscitaElencoDTO> ordersList,
DialogVenditaFiltroAvanzatoViewModel baseViewModel,
RunnableArgs<DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
return new DialogVenditaFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert;
}
private DialogVenditaFiltroAvanzatoView(final Context context, final List<OrdiniUscitaElencoDTO> ordersList, DialogVenditaFiltroAvanzatoViewModel baseViewModel, RunnableArgs<DialogVenditaFiltroAvanzatoViewModel> onDismiss) {
currentContext = context;
currentOnFilterDone = onDismiss;
viewModel = baseViewModel != null ? baseViewModel : new DialogVenditaFiltroAvanzatoViewModel();
viewModel.init(ordersList);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogVenditaFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_vendita_filtro_avanzato, null, false);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(binding.getRoot());
binding.setView(this);
binding.setViewmodel(viewModel);
initViewModel(viewModel);
initView(binding);
currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false);
currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
binding.positiveBtn.setOnClickListener(view -> {
currentAlert.dismiss();
});
binding.neutralBtn.setOnClickListener(view -> {
resetAll();
});
currentAlert.setOnDismissListener(dialogInterface -> {
if(currentOnFilterDone != null) currentOnFilterDone.run(viewModel);
});
}
private void initView(DialogVenditaFiltroAvanzatoBinding bindings) {
IFiltroOrdiniVendita filtroOrdiniVendita = ClassRouter.getInstance(ClassRouter.PATH.FILTRO_ORDINI_VENDITA);
// bindings.filledExposedDropdownDataCons.setOnFocusChangeListener((v, hasFocus) -> {
// bindings.filledExposedDropdownDataCons.callOnClick();
// });
bindings.filledExposedDropdownDataCons.setOnClickListener(view -> {
Calendar c = UtilityDate.getCalendarInstance();
if(dataConsegnaDate != null) {
c.setTime(dataConsegnaDate);
}
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(currentContext,
(view2, year, month, day) -> {
dataConsegnaDate = new GregorianCalendar(year, month, day).getTime();
dataConsegna.set(UtilityDate.formatDate(dataConsegnaDate, UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
}, mYear, mMonth, mDay);
datePickerDialog.show();
});
arrayAdapterCodMdep = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterCodMdep.addAll(getAvailableCodMdeps(false));
bindings.inputCodMdepNew.setVisibility(filtroOrdiniVendita.shoudShowCodMdepFilter() ? View.VISIBLE : View.GONE);
bindings.filledExposedDropdownCodMdep.setAdapter(arrayAdapterCodMdep);
arrayAdapterIdViaggio = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterIdViaggio.addAll(getAvailableIdViaggio(false));
bindings.inputIdViaggio.setVisibility(filtroOrdiniVendita.shoudShowIdViaggioFilter() ? View.VISIBLE : View.GONE);
bindings.filledExposedDropdownIdViaggio.setAdapter(arrayAdapterIdViaggio);
arrayAdapterAgente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterAgente.addAll(getAvailableAgente(false));
bindings.inputAgente.setVisibility(filtroOrdiniVendita.shoudShowAgenteFilter() ? View.VISIBLE : View.GONE);
bindings.filledExposedDropdownAgente.setAdapter(arrayAdapterAgente);
arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterNumOrds.addAll(getAvailableNumOrds(false));
bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds);
bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
arrayAdapterCliente = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterCliente.addAll(getAvailableCliente(false));
bindings.filledExposedDropdownCliente.setAdapter(arrayAdapterCliente);
arrayAdapterTermCons = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterTermCons.addAll(getAvailableTermCons(false));
bindings.filledExposedDropdownTermCons.setAdapter(arrayAdapterTermCons);
arrayAdapterVettore = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterVettore.addAll(getAvailableVettori(false));
bindings.filledExposedDropdownVettore.setAdapter(arrayAdapterVettore);
arrayAdapterAutomezzo = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterAutomezzo.addAll(getAvailableAutomezzi(false));
bindings.filledExposedDropdownAutomezzo.setAdapter(arrayAdapterAutomezzo);
arrayAdapterPaese = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterPaese.addAll(getAvailablePaesi(false));
bindings.filledExposedDropdownPaese.setAdapter(arrayAdapterPaese);
refreshAll();
}
private void initViewModel(DialogVenditaFiltroAvanzatoViewModel viewModel) {
viewModel.applyAllTests();
BindableString.registerListener(idViaggio, value -> {
viewModel.setIDViaggioFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(deposito, value -> {
viewModel.setDepositoFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(numOrds, value -> {
viewModel.setNumOrdFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(cliente, value -> {
viewModel.setClienteFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(terminiConsegna, value -> {
viewModel.setTerminiConsegnaFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(vettore, value -> {
viewModel.setVettoreFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.registerListener(automezzo, value -> {
viewModel.setAutomezzoFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
});
BindableString.resetListeners(dataConsegna);
BindableString.registerListener(dataConsegna, value -> {
viewModel.setDataConsegnaFilter(dataConsegnaDate);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
});
BindableString.resetListeners(agente);
BindableString.registerListener(agente, value -> {
viewModel.setAgenteFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterPaese, getAvailablePaesi(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
});
BindableString.resetListeners(paese);
BindableString.registerListener(paese, value -> {
viewModel.setPaeseFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodMdep, getAvailableCodMdeps(true));
refreshArrayAdapter(arrayAdapterIdViaggio, getAvailableIdViaggio(true));
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
refreshArrayAdapter(arrayAdapterCliente, getAvailableCliente(true));
refreshArrayAdapter(arrayAdapterTermCons, getAvailableTermCons(true));
refreshArrayAdapter(arrayAdapterVettore, getAvailableVettori(true));
refreshArrayAdapter(arrayAdapterAgente, getAvailableAgente(true));
refreshArrayAdapter(arrayAdapterAutomezzo, getAvailableAutomezzi(true));
});
}
private void refreshArrayAdapter(ArrayAdapter<String> arrayAdapter, List<String> inputList) {
arrayAdapter.clear();
arrayAdapter.addAll(inputList);
arrayAdapter.notifyDataSetChanged();
}
private List<String> getAvailableIdViaggio(boolean skipRecalc) {
return Stream
.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.filter(x -> x.getIdViaggio() != null)
.sortBy(x -> -x.getIdViaggio())
.map(x -> x.getIdViaggio() != null ? x.getIdViaggio().toString() : null)
.distinct()
.toList();
}
private List<String> getAvailableAgente(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getNomeAgente)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableCodMdeps(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getCodMdep)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableCliente(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getRagSocOrd)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableNumOrds(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(x -> x.getNumOrd().toString())
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableTermCons(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getTermCons)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableVettori(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.filter(x -> x.getCodVvet() != null)
.map(x -> x.getCodVvet() + " - " + x.getDescrizioneVettore())
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableAutomezzi(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getDescrizioneAuto)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailablePaesi(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(viewModel.getMutableFilteredOrderList().getValue()))
.map(OrdiniUscitaElencoDTO::getCitta)
.withoutNulls()
.distinct()
.sorted()
.toList();
}
public void refreshAll() {
deposito.refresh();
idViaggio.refresh();
numOrds.refresh();
cliente.refresh();
terminiConsegna.refresh();
vettore.refresh();
automezzo.refresh();
dataConsegna.refresh();
agente.refresh();
paese.refresh();
}
public void resetAll() {
deposito.set(null);
idViaggio.set(null);
numOrds.set(null);
cliente.set(null);
dataConsegna.set(null);
terminiConsegna.set(null);
vettore.set(null);
automezzo.set(null);
agente.set(null);
paese.set(null);
}
}

View File

@@ -1,167 +0,0 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.OrdiniUscitaElencoDTO;
public class DialogVenditaFiltroAvanzatoViewModel {
private Predicate<OrdiniUscitaElencoDTO> currentDepositoPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentIdViaggioPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentNumOrdsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentClientePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentDataConsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentTermConsPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentVettorePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentAgentePredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentAutomezzoPredicate = null;
private Predicate<OrdiniUscitaElencoDTO> currentPaesePredicate = null;
private List<OrdiniUscitaElencoDTO> initialOrderList;
private final MutableLiveData<List<OrdiniUscitaElencoDTO>> currentFilteredOrderList = new MutableLiveData<>();
public void init(List<OrdiniUscitaElencoDTO> initialList) {
this.initialOrderList = initialList;
this.currentFilteredOrderList.setValue(this.initialOrderList);
}
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() {
return this.currentFilteredOrderList;
}
public void setIDViaggioFilter(String idViaggio) {
if(UtilityString.isNullOrEmpty(idViaggio)) currentIdViaggioPredicate = null;
else {
String[] idViaggiSplitted = idViaggio.split("[,\\ ]");
try{
List<Integer> idViaggiInteger = Stream.of(idViaggiSplitted)
.filter(x -> !UtilityString.isNullOrEmpty(x))
.map(Integer::parseInt).toList();
currentIdViaggioPredicate = o -> idViaggiInteger.contains(o.getIdViaggio());
} catch (NumberFormatException ex) {
currentIdViaggioPredicate = null;
}
}
}
public void setDepositoFilter(String deposito) {
if(UtilityString.isNullOrEmpty(deposito)) currentDepositoPredicate = null;
else {
currentDepositoPredicate = o -> o.getCodMdep().toLowerCase().equalsIgnoreCase(deposito);
}
}
public void setNumOrdFilter(String numOrds) {
if(UtilityString.isNullOrEmpty(numOrds)) currentNumOrdsPredicate = null;
else {
String[] numOrdsSplitted = numOrds.split("[,\\ ]");
try{
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
.filter(x -> !UtilityString.isNullOrEmpty(x))
.map(Integer::parseInt).toList();
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumOrd());
} catch (NumberFormatException ex) {
currentNumOrdsPredicate = null;
}
}
}
public void setClienteFilter(String cliente) {
if(UtilityString.isNullOrEmpty(cliente)) currentClientePredicate = null;
else {
currentClientePredicate = o -> o.getRagSocOrd().toLowerCase().contains(cliente.toLowerCase());
}
}
public void setTerminiConsegnaFilter(String terminiConsegna) {
if(UtilityString.isNullOrEmpty(terminiConsegna)) currentTermConsPredicate = null;
else {
currentTermConsPredicate = o -> !UtilityString.isNullOrEmpty(o.getTermCons()) && o.getTermCons().equalsIgnoreCase(terminiConsegna);
}
}
public void setVettoreFilter(String vettore) {
if(UtilityString.isNullOrEmpty(vettore)) currentVettorePredicate = null;
else {
currentVettorePredicate = o -> (o.getCodVvet() + " - " + o.getDescrizioneVettore()).equalsIgnoreCase(vettore);
}
}
public void setAutomezzoFilter(String automezzo) {
if(UtilityString.isNullOrEmpty(automezzo)) currentAutomezzoPredicate = null;
else {
currentAutomezzoPredicate = o -> !UtilityString.isNullOrEmpty(o.getDescrizioneAuto()) && (o.getDescrizioneAuto().toLowerCase().contains(automezzo) || o.getDescrizioneAuto().equalsIgnoreCase(automezzo));
}
}
public void setDataConsegnaFilter(Date dataConsegna) {
if(dataConsegna == null) currentDataConsPredicate = null;
else {
currentDataConsPredicate = o -> o.getDataConsD().equals(dataConsegna);
}
}
public void setAgenteFilter(String agente) {
if(UtilityString.isNullOrEmpty(agente)) currentAgentePredicate = null;
else {
currentAgentePredicate = o -> !UtilityString.isNullOrEmpty(o.getNomeAgente()) && (o.getNomeAgente().toLowerCase().contains(agente) || o.getNomeAgente().equalsIgnoreCase(agente));
}
}
public void setPaeseFilter(String paese) {
if(UtilityString.isNullOrEmpty(paese)) currentPaesePredicate = null;
else {
currentPaesePredicate = o -> !UtilityString.isNullOrEmpty(o.getCitta()) && (o.getCitta().toLowerCase().contains(paese) || o.getCitta().equalsIgnoreCase(paese));
}
}
public void applyAllTests() {
List<OrdiniUscitaElencoDTO> returnList = null;
if (currentNumOrdsPredicate == null &&
currentClientePredicate == null &&
currentDataConsPredicate == null &&
currentTermConsPredicate == null &&
currentVettorePredicate == null &&
currentAutomezzoPredicate == null &&
currentDepositoPredicate == null &&
currentIdViaggioPredicate == null &&
currentAgentePredicate == null &&
currentPaesePredicate == null
) {
returnList = this.initialOrderList;
} else {
Stream<OrdiniUscitaElencoDTO> tmpStream = Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
(currentClientePredicate == null || (currentClientePredicate.test(x))) &&
(currentDataConsPredicate == null || (currentDataConsPredicate.test(x))) &&
(currentTermConsPredicate == null || (currentTermConsPredicate.test(x))) &&
(currentVettorePredicate == null || (currentVettorePredicate.test(x))) &&
(currentAutomezzoPredicate == null || (currentAutomezzoPredicate.test(x))) &&
(currentDepositoPredicate == null || (currentDepositoPredicate.test(x))) &&
(currentIdViaggioPredicate == null || (currentIdViaggioPredicate.test(x))) &&
(currentAgentePredicate == null || (currentAgentePredicate.test(x))) &&
(currentPaesePredicate == null || (currentPaesePredicate.test(x)))
);
returnList = tmpStream.toList();
}
this.currentFilteredOrderList.setValue(returnList);
}
}

View File

@@ -1,164 +0,0 @@
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.MultiAutoCompleteTextView;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream;
import java.util.List;
import java.util.Objects;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.databinding.DialogOrdineProduzioneFiltroAvanzatoBinding;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
public class DialogOrdineProduzioneFiltroAvanzatoView {
private AlertDialog currentAlert;
private Context currentContext;
private RunnableArgs<DialogOrdineProduzioneFiltroAvanzatoViewModel> currentOnFilterDone;
public BindableString numOrds = new BindableString();
public BindableString codJcoms = new BindableString();
private ArrayAdapter<String> arrayAdapterNumOrds;
private ArrayAdapter<String> arrayAdapterCodJcoms;
private DialogOrdineProduzioneFiltroAvanzatoViewModel mViewModel;
public static AlertDialog make(final Context context,
final List<OrdineAccettazioneInevasoDTO> ordersList,
DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel,
RunnableArgs<DialogOrdineProduzioneFiltroAvanzatoViewModel> onDismiss) {
return new DialogOrdineProduzioneFiltroAvanzatoView(context, ordersList, baseViewModel, onDismiss).currentAlert;
}
private DialogOrdineProduzioneFiltroAvanzatoView(final Context context, final List<OrdineAccettazioneInevasoDTO> ordersList, DialogOrdineProduzioneFiltroAvanzatoViewModel baseViewModel, RunnableArgs<DialogOrdineProduzioneFiltroAvanzatoViewModel> onDismiss) {
currentContext = context;
currentOnFilterDone = onDismiss;
mViewModel = baseViewModel != null ? baseViewModel : new DialogOrdineProduzioneFiltroAvanzatoViewModel();
mViewModel.init(ordersList);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogOrdineProduzioneFiltroAvanzatoBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_ordine_produzione_filtro_avanzato, null, false);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(binding.getRoot());
binding.setView(this);
binding.setViewmodel(mViewModel);
initViewModel(mViewModel);
initView(binding);
currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false);
currentAlert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
currentAlert.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
binding.positiveBtn.setOnClickListener(view -> {
currentAlert.dismiss();
});
binding.neutralBtn.setOnClickListener(view -> {
resetAll();
});
currentAlert.setOnDismissListener(dialogInterface -> {
if(currentOnFilterDone != null) currentOnFilterDone.run(mViewModel);
});
}
private void initView(DialogOrdineProduzioneFiltroAvanzatoBinding bindings) {
arrayAdapterNumOrds = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterNumOrds.addAll(getAvailableNumOrds(false));
bindings.filledExposedDropdownNumOrds.setAdapter(arrayAdapterNumOrds);
bindings.filledExposedDropdownNumOrds.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
arrayAdapterCodJcoms = new ArrayAdapter(currentContext, R.layout.dialog_vendita_filtro_avanzato__single_item);
arrayAdapterCodJcoms.addAll(getAvailableCodJcoms(false));
bindings.filledExposedDropdownCodJcoms.setAdapter(arrayAdapterCodJcoms);
bindings.filledExposedDropdownCodJcoms.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
refreshAll();
}
private void initViewModel(DialogOrdineProduzioneFiltroAvanzatoViewModel viewModel) {
viewModel.applyAllTests();
BindableString.registerListener(numOrds, value -> {
viewModel.setNumOrdFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterCodJcoms, getAvailableCodJcoms(true));
});
BindableString.registerListener(codJcoms, value -> {
viewModel.setCodJcomFilter(value);
viewModel.applyAllTests();
refreshArrayAdapter(arrayAdapterNumOrds, getAvailableNumOrds(true));
});
}
private void refreshArrayAdapter(ArrayAdapter<String> arrayAdapter, List<String> inputList) {
arrayAdapter.clear();
arrayAdapter.addAll(inputList);
arrayAdapter.notifyDataSetChanged();
}
private List<String> getAvailableNumOrds(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(mViewModel.getMutableFilteredOrderList().getValue()))
.map(x -> x.getNumero().toString())
.distinct()
.withoutNulls()
.sorted()
.toList();
}
private List<String> getAvailableCodJcoms(boolean skipRecalc) {
return Stream.of(Objects.requireNonNull(mViewModel.getMutableFilteredOrderList().getValue()))
.map(OrdineAccettazioneInevasoDTO::getCodJcom)
.distinct()
.withoutNulls()
.sorted()
.toList();
}
public void refreshAll() {
numOrds.refresh();
codJcoms.refresh();
}
public void resetAll() {
numOrds.set(null);
codJcoms.set(null);
}
}

View File

@@ -1,76 +0,0 @@
package it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog;
import androidx.lifecycle.MutableLiveData;
import com.annimon.stream.Stream;
import com.annimon.stream.function.Predicate;
import java.util.List;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.accettazione.dto.OrdineAccettazioneInevasoDTO;
public class DialogOrdineProduzioneFiltroAvanzatoViewModel {
private Predicate<OrdineAccettazioneInevasoDTO> currentNumOrdsPredicate = null;
private Predicate<OrdineAccettazioneInevasoDTO> currentCodJcomsPredicate = null;
private List<OrdineAccettazioneInevasoDTO> initialOrderList;
private final MutableLiveData<List<OrdineAccettazioneInevasoDTO>> currentFilteredOrderList = new MutableLiveData<>();
public void init(List<OrdineAccettazioneInevasoDTO> initialList) {
this.initialOrderList = initialList;
this.currentFilteredOrderList.setValue(this.initialOrderList);
}
public MutableLiveData<List<OrdineAccettazioneInevasoDTO>> getMutableFilteredOrderList() {
return this.currentFilteredOrderList;
}
public void setNumOrdFilter(String numOrds) {
if(UtilityString.isNullOrEmpty(numOrds)) currentNumOrdsPredicate = null;
else {
String[] numOrdsSplitted = numOrds.split("[,\\ ]");
try{
List<Integer> numOrdsInteger = Stream.of(numOrdsSplitted)
.filter(x -> !UtilityString.isNullOrEmpty(x))
.map(Integer::parseInt).toList();
currentNumOrdsPredicate = o -> numOrdsInteger.contains(o.getNumero());
} catch (NumberFormatException ex) {
currentNumOrdsPredicate = null;
}
}
}
public void setCodJcomFilter(String codJcom) {
if(UtilityString.isNullOrEmpty(codJcom)) currentCodJcomsPredicate = null;
else {
currentCodJcomsPredicate = o -> o.getCodJcom().toLowerCase().equalsIgnoreCase(codJcom);
}
}
public void applyAllTests() {
List<OrdineAccettazioneInevasoDTO> returnList = null;
if (currentNumOrdsPredicate == null &&
currentCodJcomsPredicate == null
) {
returnList = this.initialOrderList;
} else {
Stream<OrdineAccettazioneInevasoDTO> tmpStream = Stream.of(this.initialOrderList)
.filter(x ->
(currentNumOrdsPredicate == null || (currentNumOrdsPredicate.test(x))) &&
(currentCodJcomsPredicate == null || (currentCodJcomsPredicate.test(x)))
);
returnList = tmpStream.toList();
}
this.currentFilteredOrderList.setValue(returnList);
}
}

View File

@@ -29,9 +29,6 @@ import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
@@ -178,10 +175,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
setSupportActionBar(mBindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ICustomConfiguration customConfiguration = ClassRouter.getInstance(ClassRouter.PATH.CUSTOM_CONFIGURATION);
mFlagShowCodForn = customConfiguration != null ? customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE) : true;
mDivideByGrpMerc = customConfiguration != null ? customConfiguration.getConfig(BaseCustomConfiguration.Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC) : false;
mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione();
mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mEnableQuantityReset = sharedPreferences.getBoolean("picking_uscita_enable_quantity_reset", true);

View File

@@ -13,14 +13,11 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.exception.EmptyLUException;
import it.integry.integrywmsnative.core.exception.InvalidLUException;
@@ -611,15 +608,9 @@ public class SpedizioneViewModel {
.findFirst()
.orElse(null);
final List<MtbColr> mtbColrs = Stream.of(pickingObjectDTO.getMtbColts())
.filter(x -> x.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione()))
.flatMap(x -> Stream.of(x.getMtbColr()))
.filter(x -> x.getCodMart().equalsIgnoreCase(selectedArt.getCodMart()))
.toList();
MagazzinoAutomaticoPickItemRequestDTO itemDto = new MagazzinoAutomaticoPickItemRequestDTO(selectedArt.getCodMart())
.setQtaTot(Stream.of(mtbColrs).map(MtbColr::getQtaCol).reduce(BigDecimal.ZERO, BigDecimal::add))
.setNumCnf(Stream.of(mtbColrs).map(MtbColr::getNumCnf).reduce(BigDecimal.ZERO, BigDecimal::add))
.setQtaTot(pickingObjectDTO.getSitArtOrdDTO().getQtaOrd())
.setNumCnf(pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd())
.setUntMis(selectedArt.getUntMis());
magazzinoAutomaticoPickItemRequestDTOList.add(itemDto);
@@ -1200,13 +1191,13 @@ public class SpedizioneViewModel {
}
public void createNewLU(Integer customNumCollo, String customSerCollo, Runnable onComplete) {
final List<CreateUDSRequestOrderDTO> orders = this.mTestateOrdini.stream()
final List<CreateUDSRequestOrderDTO> orders = Stream.of(this.mTestateOrdini)
.map(x -> new CreateUDSRequestOrderDTO()
.setDataCons(UtilityDate.toLocalDate(x.getDataConsD()))
.setDataOrd(UtilityDate.toLocalDate(x.getDataOrdD()))
.setGestione(x.getGestione())
.setNumOrd(x.getNumOrd()))
.collect(Collectors.toList());
.toList();
final CreateUDSRequestDTO createUDSRequestDTO = new CreateUDSRequestDTO()
.setCodMdep(SettingsManager.i().getUserSession().getDepo().getCodMdep())
@@ -1493,7 +1484,7 @@ public class SpedizioneViewModel {
positionedMtbColts -> {
this.askPrint(shouldPrint, positionedMtbColts, () -> {
positionedMtbColts.stream()
Stream.of(positionedMtbColts)
.filter(x -> !this.mColliRegistrati.contains(x))
.forEach(x -> this.mColliRegistrati.add(x));
@@ -1521,8 +1512,7 @@ public class SpedizioneViewModel {
var closeUDSRequestDto = new CloseUDSRequestDTO()
.setMtbColt(this.mCurrentMtbColt)
//.setPrintSSCC(shouldPrint)
.setOrderCodMdep(mTestateOrdini.get(0).getCodMdep())
.setEnableTransferLogic(isTrasfOrderLogicEnabled());
.setOrderCodMdep(mTestateOrdini.get(0).getCodMdep());
this.mColliSpedizioneRESTConsumer.closeUDS(closeUDSRequestDto, closeResponse -> {
@@ -1555,11 +1545,6 @@ public class SpedizioneViewModel {
onComplete, this::sendError);
}
private boolean isTrasfOrderLogicEnabled() {
OrdiniVenditaInterface ordiniVendita = ClassRouter.getInstance(ClassRouter.PATH.ORDINI_VENDITA);
return ordiniVendita != null && ordiniVendita.isTrasfOrder(mTestateOrdini);
}
private void askPeso(Runnable onComplete) {
if (mDefaultSegnoCol != -1 || !mShouldAskPesoLU) {
@@ -1728,7 +1713,7 @@ public class SpedizioneViewModel {
private void postCloseOperations(List<MtbColt> mtbColtList) {
if (mTestateOrdini != null) {
for (MtbColt mtbColt : mtbColtList) {
mTestateOrdini.stream()
Stream.of(mTestateOrdini)
.filter(x -> x.getNumOrd().equals(mtbColt.getNumOrd()) && x.getDataOrdD().equals(mtbColt.getDataOrdD()) && x.getGestioneEnum() == mtbColt.getGestioneEnum())
.forEach(x -> x.setExistColloBoolean(true));
}
@@ -1764,6 +1749,8 @@ public class SpedizioneViewModel {
pickingObjectDTO.setWithdrawMtbColrs(new ArrayList<>());
}
}
this.mCurrentMtbColt = null;
}
public void resetMatchedRows() {

View File

@@ -257,13 +257,15 @@ public class UltimiArriviFornitoreFragment extends BaseFragment implements ITitl
DialogChooseArtsFromMtbColrList
.newInstance(scannedMtbColt.getMtbColr(), items -> {
List<MtbAart> mtbAarts = new ArrayList<>();
List<MtbAart> mtbAarts = Stream.of(items)
.map(MtbColr::getMtbAart)
.toList();
if(items != null && !items.isEmpty()) {
mtbAarts = Stream.of(items)
.map(MtbColr::getMtbAart)
.toList();
}
filterItems(mtbAarts);
}, null)
.show(requireActivity().getSupportFragmentManager(), "tag");
}

View File

@@ -171,7 +171,11 @@ public class VersamentoMerceFragment extends BaseFragment implements ITitledFrag
public void onArtsChooseRequired(List<MtbColr> mtbColrList, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort) {
this.requireActivity().runOnUiThread(() -> {
DialogChooseArtsFromMtbColrList
.newInstance(mtbColrList, onComplete, onAbort)
.newInstance(mtbColrList, data -> {
if(data == null || data.isEmpty()) {
onAbort.run();
} else onComplete.run(data);
}, onAbort)
.show(requireActivity().getSupportFragmentManager(), "tag");
});
}

View File

@@ -19,8 +19,6 @@ import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import it.integry.integrywmsnative.R;
public class ExpandableLayout extends FrameLayout {
public interface State {
int COLLAPSED = 0;
@@ -56,11 +54,11 @@ public class ExpandableLayout extends FrameLayout {
super(context, attrs);
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ExpandableLayout);
duration = a.getInt(R.styleable.ExpandableLayout_el_duration, DEFAULT_DURATION);
expansion = a.getBoolean(R.styleable.ExpandableLayout_el_expanded, false) ? 1 : 0;
orientation = a.getInt(R.styleable.ExpandableLayout_android_orientation, VERTICAL);
parallax = a.getFloat(R.styleable.ExpandableLayout_el_parallax, 1);
TypedArray a = getContext().obtainStyledAttributes(attrs, net.cachapa.expandablelayout.R.styleable.ExpandableLayout);
duration = a.getInt(net.cachapa.expandablelayout.R.styleable.ExpandableLayout_el_duration, DEFAULT_DURATION);
expansion = a.getBoolean(net.cachapa.expandablelayout.R.styleable.ExpandableLayout_el_expanded, false) ? 1 : 0;
orientation = a.getInt(net.cachapa.expandablelayout.R.styleable.ExpandableLayout_android_orientation, VERTICAL);
parallax = a.getFloat(net.cachapa.expandablelayout.R.styleable.ExpandableLayout_el_parallax, 1);
a.recycle();
state = expansion == 0 ? COLLAPSED : EXPANDED;

View File

@@ -122,10 +122,10 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
.map(DialogChooseArtsFromMtbColrListItemModel::getMtbColr)
.toList();
if (selectedArts.isEmpty()) {
if (this.onAbort != null) this.onAbort.run();
return;
}
// if (selectedArts.isEmpty()) {
// if (this.onAbort != null) this.onAbort.run();
// return;
// }
if (this.onConfirmed != null)
this.onConfirmed.run(selectedArts);

View File

@@ -217,15 +217,15 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
switch (statoPartitaMag) {
case SCADUTO:
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.warn_color)));
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.warn_color)));
break;
case IN_SCADENZA:
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_baseline_warning_24);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.error_color)));
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.error_color)));
break;
default:
this.mBindings.inputDataScadLayout.setEndIconDrawable(R.drawable.ic_check_white_24dp);
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.success_color)));
this.mBindings.inputDataScadLayout.setEndIconTintList(ColorStateList.valueOf(ContextCompat.getColor(requireContext(), com.tfb.fbtoast.R.color.success_color)));
}
}

View File

@@ -11,7 +11,6 @@ import androidx.fragment.app.DialogFragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogYesNoBinding;
@@ -42,13 +41,13 @@ public class DialogYesNoView extends DialogFragment {
var binding = DialogYesNoBinding.inflate(LayoutInflater.from(requireContext()));
binding.executePendingBindings();
if(UtilityString.isNullOrEmpty(title)) {
if (UtilityString.isNullOrEmpty(title)) {
binding.titleText.setVisibility(View.GONE);
binding.descriptionText.setTextAppearance(requireContext(), R.style.TextAppearance_Material3_BodyLarge);
binding.descriptionText.setTextAppearance(requireContext(), com.google.android.material.R.style.TextAppearance_Material3_BodyLarge);
} else {
binding.titleText.setText(title);
binding.titleText.setVisibility(View.VISIBLE);
binding.descriptionText.setTextAppearance(requireContext(), R.style.TextAppearance_Material3_BodyMedium);
binding.descriptionText.setTextAppearance(requireContext(), com.google.android.material.R.style.TextAppearance_Material3_BodyMedium);
}
binding.descriptionText.setText(description);

View File

@@ -85,7 +85,6 @@
android:ellipsize="end"
android:imeOptions="actionNext"
android:inputType="textNoSuggestions"
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
android:singleLine="true"
app:binding="@{view.codTcol}" />

View File

@@ -1,146 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoViewModel" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzatoView" />
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:text="@string/dialog_vendita_filtro_avanzato"
android:gravity="center_horizontal"
android:layout_marginBottom="12dp"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_num_ords"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/num_ords">
<androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_num_ords"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number|text"
android:singleLine="true"
android:ellipsize="end"
app:binding="@{view.numOrds}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_jcoms"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/order_cod_jcoms">
<androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_jcoms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:singleLine="true"
android:ellipsize="end"
app:binding="@{view.codJcoms}"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="8dp">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/buttons_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/neutral_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/buttons_guideline"
app:strokeColor="@color/colorPrimary"
android:text="@string/reset"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/positive_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/buttons_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/confirm"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
</androidx.cardview.widget.CardView>
</layout>

View File

@@ -1,314 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoViewModel" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.ordini_uscita_elenco.dialogs.DialogVenditaFiltroAvanzatoView" />
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="12dp"
app:cardElevation="0dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:text="@string/dialog_vendita_filtro_avanzato"
android:gravity="center_horizontal"
android:layout_marginBottom="12dp"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cod_mdep_new"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:nextFocusDown="@id/input_id_viaggio"
android:hint="@string/deposit">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cod_mdep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusDown="@id/input_id_viaggio"
app:binding="@{view.deposito}" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_id_viaggio"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/travel_id">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_id_viaggio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_num_ords"
app:binding="@{view.idViaggio}" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_num_ords"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/num_ords">
<androidx.appcompat.widget.AppCompatMultiAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_num_ords"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number|text"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_cliente"
app:binding="@{view.numOrds}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_cliente"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/customer">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_cliente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_vettore"
app:binding="@{view.cliente}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_vettore"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/carrier">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_vettore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_automezzo"
app:binding="@{view.vettore}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_automezzo"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/vehicle">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_automezzo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_paese"
app:binding="@{view.automezzo}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_paese"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/city">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_paese"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_agente"
app:binding="@{view.paese}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_agente"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/agent">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_agente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionNext"
android:nextFocusForward="@id/filled_exposed_dropdown_term_cons"
app:binding="@{view.agente}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_data_cons"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/ship_date">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/filled_exposed_dropdown_data_cons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:focusable="false"
android:singleLine="true"
app:binding="@{view.dataConsegna}"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_term_cons"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/terms_of_delivery">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/filled_exposed_dropdown_term_cons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions"
android:singleLine="true"
android:ellipsize="end"
android:imeOptions="actionDone"
app:binding="@{view.terminiConsegna}"/>
</com.google.android.material.textfield.TextInputLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="8dp">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/buttons_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/neutral_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/buttons_guideline"
app:strokeColor="@color/colorPrimary"
android:text="@string/reset"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/positive_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/buttons_guideline"
app:layout_constraintEnd_toEndOf="parent"
android:text="@string/confirm"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
</androidx.cardview.widget.CardView>
</layout>

View File

@@ -3,6 +3,7 @@
buildscript {
ext {
kotlin_version = '1.8.0'
agp_version = '8.1.0-alpha04'
}
repositories {
@@ -10,7 +11,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
classpath "com.android.tools.build:gradle:$agp_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.15'
@@ -43,128 +44,4 @@ task clean(type: Delete) {
delete rootProject.buildDir
}
task buildBase() {
doFirst {
copy {
from 'dynamic__base/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/_base'
}
}
}
task buildFrudis() {
doFirst {
copy {
from 'dynamic_frudis/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/frudis'
}
}
}
task buildGramm() {
doFirst {
copy {
from 'dynamic_gramm/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/gramm'
}
}
}
task buildIme() {
doFirst {
copy {
from 'dynamic_ime/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/ime'
}
}
}
task buildSaporiVeriPV() {
doFirst {
copy {
from 'dynamic_saporiveri_pv/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/saporiveri_pv'
}
}
}
task buildSaporiVeri() {
doFirst {
copy {
from 'dynamic_saporiveri/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/saporiveri'
}
}
}
task buildVGAlimenti() {
doFirst {
copy {
from 'dynamic_vgalimenti/src/main/java/it/integry'
into 'app/src/main/java/it/integry'
}
}
dependsOn "app:build"
doLast {
copy {
from 'app/build/outputs/apk/release'
into 'dist/release/vgalimenti'
}
}
}

View File

@@ -1,2 +0,0 @@
call build_azienda.bat _base
call build_azienda.bat vgalimenti

View File

@@ -1,15 +0,0 @@
@echo off
SET nome_azienda=%1
XCOPY dynamic_%nome_azienda%\src\main\java\it\integry app\src\main\java\it\integry\ /E /Y
CALL gradlew app:build --stacktrace
RMDIR app\src\main\java\it\integry\wms\ /S /Q
MKDIR dist
MKDIR dist\release
MKDIR dist\release\%nome_azienda%
MOVE app\build\outputs\apk\release\*.apk dist\release\%nome_azienda%\
MOVE app\build\outputs\apk\release\*.txt dist\release\%nome_azienda%\

View File

@@ -1 +0,0 @@
/build

View File

@@ -1,26 +0,0 @@
plugins {
id 'com.android.dynamic-feature'
}
android {
compileSdkVersion 33
defaultConfig {
minSdkVersion 21
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
lint {
abortOnError false
}
namespace 'it.integry.wms.dynamic__base'
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':app')
}

View File

@@ -1,11 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module
dist:instant="false"
dist:onDemand="false"
dist:title="@string/title_dynamic__base">
<dist:fusing dist:include="true" />
</dist:module>
</manifest>

View File

@@ -1,29 +0,0 @@
package it.integry.wms.dynamic_customization;
import android.content.Context;
import android.util.Log;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.wms.dynamic_customization.extensions.CustomConfiguration;
import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita;
import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
public class DynamicContext {
public void init(Context context) {
Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda BASE");
try {
ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class);
ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class);
} catch (Exception ex) {
UtilityExceptions.defaultException(context, ex);
}
Log.d("DynamicContext", "Caricamento personalizzazioni per Azienda BASE COMPLETATO");
}
}

View File

@@ -1,11 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration {
public CustomConfiguration() {
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
public class FiltroOrdiniVendita implements IFiltroOrdiniVendita {
@Override
public boolean shoudShowCodMdepFilter() {
return false;
}
@Override
public boolean shoudShowIdViaggioFilter() {
return false;
}
@Override
public boolean shoudShowAgenteFilter() {
return false;
}
}

View File

@@ -1,16 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import java.util.List;
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
public class OrdiniVendita implements OrdiniVenditaInterface {
@Override
public boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini) {
return false;
}
}

View File

@@ -1 +0,0 @@
/build

Binary file not shown.

View File

@@ -1,23 +0,0 @@
plugins {
id 'com.android.dynamic-feature'
}
android {
compileSdkVersion 31
defaultConfig {
minSdkVersion 21
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
namespace 'it.integry.wms.dynamic_customization'
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(':app')
implementation 'androidx.appcompat:appcompat:1.6.0'
}

View File

@@ -1,11 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module
dist:instant="false"
dist:onDemand="false"
dist:title="@string/title_dynamic_vgalimenti">
<dist:fusing dist:include="true" />
</dist:module>
</manifest>

View File

@@ -1,29 +0,0 @@
package it.integry.wms.dynamic_customization;
import android.content.Context;
import android.util.Log;
import it.integry.integrywmsnative.core.class_router.ClassRouter;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.wms.dynamic_customization.extensions.CustomConfiguration;
import it.integry.wms.dynamic_customization.extensions.FiltroOrdiniVendita;
import it.integry.wms.dynamic_customization.extensions.OrdiniVendita;
public class DynamicContext {
public void init(Context context) {
Log.d("DynamicContext", "Caricamento personalizzazioni per VGAlimenti");
try {
ClassRouter.registerPath(ClassRouter.PATH.FILTRO_ORDINI_VENDITA, FiltroOrdiniVendita.class);
ClassRouter.registerPath(ClassRouter.PATH.ORDINI_VENDITA, OrdiniVendita.class);
ClassRouter.registerPath(ClassRouter.PATH.CUSTOM_CONFIGURATION, CustomConfiguration.class);
} catch (Exception ex) {
UtilityExceptions.defaultException(context, ex);
}
Log.d("DynamicContext", "Caricamento personalizzazioni per VGAlimenti COMPLETATO");
}
}

View File

@@ -1,13 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import it.integry.integrywmsnative.core.class_router.BaseCustomConfiguration;
import it.integry.integrywmsnative.core.class_router.interfaces.ICustomConfiguration;
public class CustomConfiguration extends BaseCustomConfiguration implements ICustomConfiguration {
public CustomConfiguration() {
configurations.put(Keys.FLAG_SHOW_COD_FORN_IN_SPEDIZIONE, false);
configurations.put(Keys.FLAG_SPEDIZIONE_GROUP_BY_GRP_MERC, true);
}
}

View File

@@ -1,22 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import it.integry.integrywmsnative.core.class_router.interfaces.IFiltroOrdiniVendita;
public class FiltroOrdiniVendita implements IFiltroOrdiniVendita {
@Override
public boolean shoudShowCodMdepFilter() {
return true;
}
@Override
public boolean shoudShowIdViaggioFilter() {
return true;
}
@Override
public boolean shoudShowAgenteFilter() {
return true;
}
}

View File

@@ -1,21 +0,0 @@
package it.integry.wms.dynamic_customization.extensions;
import java.util.List;
import it.integry.integrywmsnative.core.class_router.interfaces.OrdiniVenditaInterface;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class OrdiniVendita implements OrdiniVenditaInterface {
@Override
public boolean isTrasfOrder(List<OrdineUscitaInevasoDTO> testateOrdini) {
// Se il deposito del collo è diverso dal deposito dell'utente allora sto "evadendo"
// la merce per una vendita presente su un altro deposito
String codMdepOrder = testateOrdini.get(0).getCodMdep();
return !UtilityString.isNullOrEmpty(codMdepOrder) &&
!codMdepOrder.equalsIgnoreCase(SettingsManager.i().getUserSession().getDepo().getCodMdep());
}
}

View File

@@ -1,6 +1,6 @@
#Wed Oct 14 10:44:19 CEST 2020
#Mon Feb 13 15:14:43 CET 2023
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
zipStoreBase=GRADLE_USER_HOME

View File

@@ -1,2 +1,2 @@
include ':app', ':pointmobilescannerlibrary', ':dynamic_vgalimenti', ':dynamic__base', ':zebrascannerlibrary', ':honeywellsdk', ':honeywellscannerlibrary', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library'
include ':app', ':pointmobilescannerlibrary', ':zebrascannerlibrary', ':honeywellsdk', ':honeywellscannerlibrary', ':keyobardemulatorscannerlibrary', ':barcode_base_android_library'