Compare commits

...

66 Commits

Author SHA1 Message Date
ac7e0443a6 Finish v1.33.08(379) 2023-05-15 12:20:24 +02:00
05c28d62d8 -> v1.33.08 (379) 2023-05-15 12:20:16 +02:00
bf2ac81ab8 Merge remote-tracking branch 'origin/develop' into develop 2023-05-15 12:19:32 +02:00
17a78ef044 Implementato nel refresh dei dati in BaseRepository un controllo per evitare di cancellare, da SQLite, dati non sincronizzati 2023-05-15 12:19:24 +02:00
3c78c2787a Finish v1.33.07(378) 2023-05-12 10:19:07 +02:00
c7358b536e Finish v1.33.07(378) 2023-05-12 10:19:06 +02:00
4f9fe14f7e -> v1.33.07 (378) 2023-05-12 10:19:01 +02:00
0934765176 [CARELLI - ORDINI ACQUISTO]
- corretta gestione merce da ricevere per rispecchiare il nuovo servizio (ora riceve le qta invece che le confezioni)
2023-05-12 10:18:16 +02:00
b7d3cb18b9 corretto appVersionName 2023-05-11 15:29:23 +02:00
227c67dc23 Finish v1.33.06(377) 2023-05-11 15:03:33 +02:00
da3c9eae6e Finish v1.33.06(377) 2023-05-11 15:03:33 +02:00
bf37a1acaf -> v1.33.06 (377) 2023-05-11 15:03:25 +02:00
2a8974e9c6 corretti nomi setup da oridne a ordine 2023-05-11 15:02:25 +02:00
c34d7dc777 Finish v1.33.05(376) 2023-05-10 12:27:34 +02:00
461a2f705e Finish v1.33.05(376) 2023-05-10 12:27:34 +02:00
705dd96a0e -> v1.33.05 (376) 2023-05-10 12:27:28 +02:00
10128a1bae Merge remote-tracking branch 'origin/develop' into develop 2023-05-10 12:25:28 +02:00
54d40ca06e [CARELLI - Ordini acquisto]
- aggiunta setup per abilitare l'ordine multi griglia
[SAPORI VERI - Ordini acquisto]
- Il dialog di caricamento non sparisce alla chiusura del dialog di inserimento qta
- il calcolo della qtaTotale viene arrotondato troppo (5*0.30=1.51)
2023-05-10 12:25:19 +02:00
e4aa2d19d9 Finish v1.33.04(375) 2023-05-10 11:49:46 +02:00
6251c0f1ac Finish v1.33.04(375) 2023-05-10 11:49:46 +02:00
3caed63b7f -> v1.33.04 (375) 2023-05-10 11:49:34 +02:00
75bc046cf5 Merge remote-tracking branch 'origin/develop' into develop 2023-05-10 11:47:52 +02:00
97d27b047d Fix sulla porta TCP nel caso non fosse esplicita 2023-05-10 11:47:36 +02:00
44e00f4f98 Finish v1.33.03(374) 2023-05-04 13:11:34 +02:00
81b053ee06 Finish v1.33.03(374) 2023-05-04 13:11:33 +02:00
f1b5a7ec1b -> v1.33.03 (374) 2023-05-04 13:11:28 +02:00
2d4211d329 [SMETAR - Spedizione]
risolto bug nullPointer in picking da magazzino automatico di articolo senza giacenza
2023-05-04 13:09:09 +02:00
c5ba78eeda Finish v1.33.02(373) 2023-05-03 16:35:01 +02:00
1faaef7062 Finish v1.33.02(373) 2023-05-03 16:35:01 +02:00
762c5fd5b5 -> v1.33.02 (373) 2023-05-03 16:34:55 +02:00
9af5970ec7 [Carelli - Inventario]
risolto bug in aggiunta articolo
2023-05-03 16:33:49 +02:00
3a5836ba4b Finish v1.33.01(372) 2023-04-28 12:56:41 +02:00
72b0e29ae6 Finish v1.33.01(372) 2023-04-28 12:56:40 +02:00
e0cc802b62 -> v1.33.01 (372) 2023-04-28 12:56:32 +02:00
2d4d9cef4e Merge remote-tracking branch 'origin/develop' into develop 2023-04-28 12:55:49 +02:00
4a8a21b970 Fix su ricerca articoli per posizione in Picking Libero 2023-04-28 12:55:20 +02:00
5103a53c11 [CARELLI - ORDINI ACQUISTO]
Risolto bug quantità raddoppiate in primo inserimento articolo
2023-04-26 17:16:39 +02:00
11c4cba70c Finish v1.33.00(371) 2023-04-26 12:48:01 +02:00
b1dba20973 Finish v1.33.00(371) 2023-04-26 12:48:01 +02:00
920c22083b -> v1.33.00 (371) 2023-04-26 12:47:54 +02:00
f9230ac341 Implementata gestione device id 2023-04-26 12:47:14 +02:00
6344c4b77d Finish v1.32.30(370) 2023-04-18 15:33:45 +02:00
d4c111dedc Finish v1.32.30(370) 2023-04-18 15:33:45 +02:00
65dda1d5c0 -> v1.32.30 (370) 2023-04-18 15:33:19 +02:00
4a7406fda1 Controllate qta > 0 in caso di missione per magazzino automatico 2023-04-18 15:32:02 +02:00
ef17e7a0c7 Merge remote-tracking branch 'origin/develop' into develop 2023-04-18 15:31:29 +02:00
c45850555e Compiled with JDK17 2023-04-18 15:31:04 +02:00
303690eed2 Finish v1.32.29(369) 2023-04-13 19:12:39 +02:00
ae62b26edf Finish v1.32.29(369) 2023-04-13 19:12:38 +02:00
2e39754c20 -> v1.32.29 (369) 2023-04-13 19:12:29 +02:00
0ae6bbcd96 CARELLI - aggiunto dettaglio griglie in ordini acquisto
CARELLI - impostata qta default in inserimento qta da ordinare ad 1 ct in ordini di acquisto
CARELLI - aggiunto flag stampa in chiusura ul spedizione
2023-04-13 19:11:43 +02:00
529455931d Finish v1.32.28(368) 2023-04-04 10:37:00 +02:00
46d0510ed8 Finish v1.32.28(368) 2023-04-04 10:36:59 +02:00
b02e12d76e -> v1.32.28 (368) 2023-04-04 10:36:46 +02:00
c6bbde2b67 Implementato in Rettifica Giacenze il controllo della setup che determina la creazione dei documenti in Spedizione 2023-04-04 10:35:57 +02:00
cfbb27a67b Abilitato controllo del num_cnf solo se l'articolo non è a qta_cnf fissa 2023-04-03 18:03:23 +02:00
35283fc11b Finish v1.32.27(367) 2023-04-03 14:15:58 +02:00
c3d62f88b4 Finish v1.32.27(367) 2023-04-03 14:15:58 +02:00
fc8469bf07 -> v1.32.27 (367) 2023-04-03 14:15:52 +02:00
400f1440db Completata gestione delle unità di misura in colli nel popup informativo 2023-04-03 14:09:31 +02:00
ad12e7e65b Finish v1.32.26(366) 2023-04-03 10:20:33 +02:00
a63e3817b5 Finish v1.32.26(366) 2023-04-03 10:20:33 +02:00
cbd772bf7e -> v1.32.26 (366) 2023-04-03 10:20:27 +02:00
e90bd46a42 Implementata gestione delle qta in arrivo durante la preparazione della merce in spedizione. Sistemata gestione popup informativo in spedizione. 2023-04-03 10:19:56 +02:00
96bd5d516c Aggiunta qta in arrivo nella retrieve della situazione ordini 2023-03-31 09:38:56 +02:00
d9306e13c2 Finish v1.32.25(365) 2023-03-30 09:47:37 +02:00
53 changed files with 580 additions and 128 deletions

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 365
def appVersionName = '1.32.25'
def appVersionCode = 379
def appVersionName = '1.33.08'
signingConfigs {
release {
@@ -31,8 +31,6 @@ android {
}
}
compileSdkVersion 33
defaultConfig {
applicationId "it.integry.integrywmsnative"
minSdkVersion 21
@@ -65,8 +63,8 @@ android {
android.buildFeatures.buildConfig true
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
coreLibraryDesugaringEnabled true
}
@@ -90,8 +88,7 @@ android {
abortOnError false
}
namespace 'it.integry.integrywmsnative'
compileSdk 33
}
dependencies {

View File

@@ -89,8 +89,8 @@ public class MainApplicationModule {
@Provides
@Singleton
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase) {
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase);
MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) {
return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer);
}
@Provides

View File

@@ -6,6 +6,8 @@ import android.text.SpannableString;
import android.text.Spanned;
import android.text.SpannedString;
import com.google.firebase.installations.FirebaseInstallations;
import java.net.ConnectException;
import javax.inject.Singleton;
@@ -13,6 +15,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.AppDatabase;
import it.integry.integrywmsnative.core.menu.MenuService;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityThread;
@@ -23,13 +26,15 @@ public class MainContext {
private final Context applicationContext;
private final MenuService menuService;
private final AppDatabase appDatabase;
private final SystemRESTConsumer systemRESTConsumer;
private Listener mListener;
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase) {
public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) {
this.applicationContext = applicationContext;
this.menuService = menuService;
this.appDatabase = appDatabase;
this.systemRESTConsumer = systemRESTConsumer;
}
public void init() {
@@ -40,10 +45,13 @@ public class MainContext {
exception.printStackTrace();
}
this.initDBData(() -> {
this.initMenu(() -> {
if (mListener != null) mListener.onContextInitialized();
this.initDeviceId(() -> {
this.initDBData(() -> {
this.initMenu(() -> {
if (mListener != null) mListener.onContextInitialized();
});
});
});
@@ -52,6 +60,25 @@ public class MainContext {
}
private void initDeviceId(Runnable onComplete) {
if (SettingsManager.i().getUserSession().getDeviceId() != null) {
onComplete.run();
return;
}
FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> {
SettingsManager.i().getUserSession().setDeviceId(fid.getResult());
SettingsManager.update();
systemRESTConsumer.registerDevice(onComplete, ex -> {
if (mListener != null) mListener.onError(new SpannedString(ex.getMessage()));
});
});
}
public void logout(Runnable onLoggedOut) {
menuService.invalidateCache();
UtilityThread.executeParallel(() -> {

View File

@@ -259,7 +259,7 @@ public class ArticoloOrdine {
}
public float getCnfDaRic() {
return qtaCnf > 0.f ? merceDaRic * qtaCnf : 0;
return qtaCnf > 0.f ? merceDaRic / qtaCnf : 0;
}
public int checkQtaProposta() {

View File

@@ -58,7 +58,7 @@ public abstract class _BaseRepository<
.collect(Collectors.toList());
var dataToDelete = finalLocalData.stream()
.filter(x -> finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.filter(x -> x.isSyncronized() && finalRemoteData.stream().noneMatch(y -> keyComparator.run(y, x)))
.collect(Collectors.toList());
var dataToInsert = finalRemoteData.stream()

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.utility.UtilityResources;
public class GridNotSelectedException extends Exception {
public GridNotSelectedException() {
super(UtilityResources.getString(R.string.grid_not_selected));
}
}

View File

@@ -39,7 +39,6 @@ public class MvwSitArtUdcDetInventario {
private String codJfas;
private MtbAart mtbAart;
public String getGestione() {
return gestione;
}
@@ -283,7 +282,6 @@ public class MvwSitArtUdcDetInventario {
return this;
}
public MtbColr toMtbColr() {
return new MtbColr()
.setCodJcom(getCodJcom())

View File

@@ -22,6 +22,7 @@ public class HttpInterceptor implements Interceptor {
final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB();
final String USERNAME = SettingsManager.i().getUser().getUsername();
final String PASSWORD = SettingsManager.i().getUser().getPassword();
final String DEVICE_ID = SettingsManager.i().getUserSession().getDeviceId();
final Request request = chain.request();
final HttpUrl url = request.url().newBuilder()
@@ -36,6 +37,7 @@ public class HttpInterceptor implements Interceptor {
.addHeader("Accept", "*/*")
.addHeader("username", USERNAME != null ? USERNAME : "")
.addHeader("password", PASSWORD != null ? PASSWORD : "")
.addHeader("device_id", DEVICE_ID != null ? DEVICE_ID : "")
.url(url).build();
return chain.proceed(newRequest);

View File

@@ -63,7 +63,7 @@ public class RESTBuilder {
OkHttpClient client = clientBuilder.build();
String endpoint = protocol + "://" + host + ":" + port + "/" + (addEmsApi ? "ems-api/" : "");
String endpoint = protocol + "://" + host + (port > 0 ? ":" + port : "") + "/" + (addEmsApi ? "ems-api/" : "");
Gson gson = new GsonBuilder()

View File

@@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -14,6 +15,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbGrup;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.model.dto.StatoArticoloDTO;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
@@ -58,6 +60,8 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
public static void getByCodMartsStatic(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind)
.withoutNulls()
.distinct()
.collect(Collectors.joining(","));
@@ -131,8 +135,55 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbGrup>>() {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
this.systemRESTConsumer.processSql("SELECT * FROM mtb_grup " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
public void getUntMisArts(List<String> inputUntMis, RunnableArgs<List<MtbUntMis>> onComplete, RunnableArgs<Exception> onFailed) {
List<HashMap<String, Object>> whereCondList = Stream.of(inputUntMis)
.distinct()
.withoutNulls()
.map(x -> {
HashMap<String, Object> data = new HashMap<>();
data.put("unt_mis", x);
return data;
})
.toList();
var whereCond = whereCondList.isEmpty() ? "" : " WHERE " + UtilityQuery.concatFieldListInWhereCond(whereCondList);
Type typeOfObjectsList = new TypeToken<ArrayList<MtbUntMis>>() {
}.getType();
this.systemRESTConsumer.processSql("SELECT * FROM mtb_unt_mis " + whereCond, typeOfObjectsList, onComplete, onFailed);
}
public void fillMtbAartsWithMtbUntMis(List<MtbAart> inputMtbAart, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
var inputUntMis = new ArrayList<String>();
if (inputMtbAart != null && !inputMtbAart.isEmpty()) {
inputUntMis.addAll(Stream.of(inputMtbAart)
.map(MtbAart::getUntMis)
.withoutNulls()
.distinct()
.toList());
}
if (inputUntMis.isEmpty()) {
onComplete.run(inputMtbAart);
return;
}
getUntMisArts(inputUntMis, mtbUntMiss -> {
for (var item : inputMtbAart) {
var mtbUntMis = Stream.of(mtbUntMiss).filter(x -> x.getUntMis().equalsIgnoreCase(item.getUntMis()))
.findFirstOrElse(null);
if (mtbUntMis != null)
item.setMtbUntMis(Collections.singletonList(mtbUntMis));
}
onComplete.run(inputMtbAart);
}, onFailed);
}
}

View File

@@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
@@ -13,6 +14,7 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto;
import it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationResponseDto;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call;
@@ -120,7 +122,10 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<InstantItemSituationResponseDto>> call, Response<ServiceRESTResponse<InstantItemSituationResponseDto>> response) {
analyzeAnswer(response, "getInstantItemSituation", onComplete, onFailed);
analyzeAnswer(response, "getInstantItemSituation", data -> {
fillInstantItemSituationWithMtbAarts(data, onComplete, onFailed);
}, onFailed);
}
@Override
@@ -130,5 +135,54 @@ public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
});
}
private void fillInstantItemSituationWithMtbAarts(InstantItemSituationResponseDto data, RunnableArgs<InstantItemSituationResponseDto> onComplete, RunnableArgs<Exception> onFailed) {
var inputCodMarts = new ArrayList<String>();
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
inputCodMarts.addAll(Stream.of(data.getIncomingItems())
.map(InstantItemSituationIncomingItemDto::getCodMart)
.toList());
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
inputCodMarts.addAll(Stream.of(data.getAvailableItems())
.map(MvwSitArtUdcDetInventario::getCodMart)
.toList());
}
if (inputCodMarts.isEmpty()) {
onComplete.run(data);
return;
}
mArticoloRESTConsumer.getByCodMarts(inputCodMarts, mtbAarts -> {
mArticoloRESTConsumer.fillMtbAartsWithMtbUntMis(mtbAarts, newMtbAarts -> {
if (data.getIncomingItems() != null && !data.getIncomingItems().isEmpty()) {
for (var item : data.getIncomingItems()) {
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
.findFirstOrElse(null);
if (mtbAart != null)
item.setMtbAart(mtbAart);
}
}
if (data.getAvailableItems() != null && !data.getAvailableItems().isEmpty()) {
for (var item : data.getAvailableItems()) {
var mtbAart = Stream.of(newMtbAarts).filter(x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()))
.findFirstOrElse(null);
if (mtbAart != null)
item.setMtbAart(mtbAart);
}
}
onComplete.run(data);
}, onFailed);
}, onFailed);
}
}

View File

@@ -61,7 +61,10 @@ public class OrdiniRESTConsumer extends _BaseRESTConsumer {
.filter(x -> !UtilityString.isNullOrEmpty(x.getPartitaMag()))
.forEach(x -> {
if (!Stream.of(batchLotsToSearch).anyMatch(batchLotToSearch -> batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) && batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) {
if (!Stream.of(batchLotsToSearch)
.anyMatch(batchLotToSearch ->
batchLotToSearch.getCodMart().equalsIgnoreCase(x.getCodMart()) &&
batchLotToSearch.getPartitaMag().equalsIgnoreCase(x.getPartitaMag()))) {
MtbPartitaMag mtbPartitaMag = new MtbPartitaMag()
.setCodMart(x.getCodMart())
.setPartitaMag(x.getPartitaMag());

View File

@@ -29,6 +29,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
@@ -39,6 +40,27 @@ import retrofit2.Response;
@Singleton
public class SystemRESTConsumer extends _BaseRESTConsumer {
public void registerDevice(final Runnable onSuccess, final RunnableArgs<Exception> onFailed) {
RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO()
.setApp("WMS");
SystemRESTConsumerService systemRESTConsumerService = RESTBuilder.getService(SystemRESTConsumerService.class);
systemRESTConsumerService.registerDevice(registerDeviceRequestDTO)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<Void>> call, Response<ServiceRESTResponse<Void>> response) {
analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<Void>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public <T> void processSql(String nativeSql, final Type clazz, final RunnableArgs<T> onComplete, final RunnableArgs<Exception> onFailed) {
NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO();
nativeSqlDTO.nativeSql = nativeSql;

View File

@@ -6,6 +6,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
@@ -14,6 +15,9 @@ import retrofit2.http.Query;
public interface SystemRESTConsumerService {
@POST("device/register")
Call<ServiceRESTResponse<Void>> registerDevice(@Body RegisterDeviceRequestDTO registerDeviceRequestDTO);
@POST("processSql")
Call<ServiceRESTResponse<Object>> processSql(@Body NativeSqlRequestDTO nativeSqlDTO);

View File

@@ -28,6 +28,7 @@ public class SitArtOrdDTO {
private String descrizioneMsfa;
private String untord;
private BigDecimal qtaOmg;
private BigDecimal qtaArrivo;
private final HashMap<String, Object> extraInfo = new HashMap<>();
@@ -232,4 +233,13 @@ public class SitArtOrdDTO {
this.qtaOmg = qtaOmg;
return this;
}
public BigDecimal getQtaArrivo() {
return qtaArrivo;
}
public SitArtOrdDTO setQtaArrivo(BigDecimal qtaArrivo) {
this.qtaArrivo = qtaArrivo;
return this;
}
}

View File

@@ -3,6 +3,8 @@ package it.integry.integrywmsnative.core.rest.model.giacenza;
import java.math.BigDecimal;
import java.time.LocalDate;
import it.integry.integrywmsnative.core.model.MtbAart;
public class InstantItemSituationIncomingItemDto {
private BigDecimal qtaOrd;
@@ -21,6 +23,7 @@ public class InstantItemSituationIncomingItemDto {
private String codJcom;
private String codMdep;
private String untMis;
private MtbAart mtbAart;
public BigDecimal getQtaOrd() {
return qtaOrd;
@@ -85,4 +88,13 @@ public class InstantItemSituationIncomingItemDto {
public String getUntMis() {
return untMis;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public InstantItemSituationIncomingItemDto setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
}

View File

@@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.rest.model.system;
public class RegisterDeviceRequestDTO {
private String app;
public String getApp() {
return app;
}
public RegisterDeviceRequestDTO setApp(String app) {
this.app = app;
return this;
}
}

View File

@@ -39,10 +39,12 @@ public class DBSettingsModel {
private boolean flagOrdinaNuoviArticoliInGriglia;
private boolean flagOrdinaArticoliOnScan;
private boolean flagConsentiFuoriPianoLogistico;
private boolean flagConsentiOrdineSenzaGriglia;
private String docInterniCheckFornitore;
private String produzioneDefaultCodAnag;
private boolean flagPrintPackingListOnOrderClose;
private boolean flagPrintEtichetteOnOrderClose;
private boolean flagPrintEtichetteOnLUClose;
private int onNumCnfInputChanged = 1;
private int onQtaTotInputChanged = 1;
private boolean flagAccettazioneUseQtaOrd = false;
@@ -57,6 +59,8 @@ public class DBSettingsModel {
private boolean flagCanCreateInventario = true;
private boolean flagCanAddUnknownItemsInventario = true;
private boolean flagShouldAskToCreateOrUpdateRowInventario = false;
private String commessaMagazzino;
private boolean flagGeneraDocumentoSpedizione = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -283,6 +287,15 @@ public class DBSettingsModel {
return this;
}
public boolean isFlagPrintEtichetteOnLUClose() {
return flagPrintEtichetteOnLUClose;
}
public DBSettingsModel setFlagPrintEtichetteOnLUClose(boolean flagPrintEtichetteOnLUClose) {
this.flagPrintEtichetteOnLUClose = flagPrintEtichetteOnLUClose;
return this;
}
public int getOnNumCnfInputChanged() {
return onNumCnfInputChanged;
}
@@ -436,4 +449,31 @@ public class DBSettingsModel {
this.flagConsentiFuoriPianoLogistico = flagConsentiFuoriPianoLogistico;
return this;
}
public boolean isFlagConsentiOrdineSenzaGriglia() {
return flagConsentiOrdineSenzaGriglia;
}
public DBSettingsModel setFlagConsentiOrdineSenzaGriglia(boolean flagConsentiOrdineSenzaGriglia) {
this.flagConsentiOrdineSenzaGriglia = flagConsentiOrdineSenzaGriglia;
return this;
}
public String getCommessaMagazzino() {
return commessaMagazzino;
}
public DBSettingsModel setCommessaMagazzino(String commessaMagazzino) {
this.commessaMagazzino = commessaMagazzino;
return this;
}
public boolean isFlagGeneraDocumentoSpedizione() {
return flagGeneraDocumentoSpedizione;
}
public DBSettingsModel setFlagGeneraDocumentoSpedizione(boolean flagGeneraDocumentoSpedizione) {
this.flagGeneraDocumentoSpedizione = flagGeneraDocumentoSpedizione;
return this;
}
}

View File

@@ -15,6 +15,7 @@ import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.StbGestSetup;
import it.integry.integrywmsnative.core.model.dto.InternalCodAnagsDTO;
@@ -310,7 +311,11 @@ public class SettingsManager {
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("ORDINI_A")
.setKeySection("FLAG_CONSENTI_ORIDNE_DA_GRIGLIA"));
.setKeySection("FLAG_CONSENTI_ORDINE_DA_GRIGLIA"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("ORDINI_A")
.setKeySection("FLAG_CONSENTI_ORDINE_SENZA_GRIGLIA"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PVM")
.setSection("DOC_INTERNI")
@@ -331,6 +336,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_ETICHETTE_ON_CLOSE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_ETICHETTE_ON_LU_CLOSE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
@@ -367,6 +376,14 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("INVENTARIO")
.setKeySection("FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SETUP")
.setKeySection("COMMESSA_MAGAZZINO"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("GENERA_DOC"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mGestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
@@ -391,9 +408,11 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
dbSettingsModelIstance.setFlagConsentiFuoriPianoLogistico(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORIDNE_DA_GRIGLIA", Boolean.class));
dbSettingsModelIstance.setFlagConsentiFuoriPianoLogistico(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORDINE_DA_GRIGLIA", Boolean.class));
dbSettingsModelIstance.setFlagConsentiOrdineSenzaGriglia(getValueFromList(list, "ORDINI_A", "FLAG_CONSENTI_ORDINE_SENZA_GRIGLIA", Boolean.class));
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
dbSettingsModelIstance.setFlagPrintEtichetteOnLUClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_LU_CLOSE", Boolean.class, true));
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class));
dbSettingsModelIstance.setCodDtipOrdTrasfV(getValueFromList(list, "SPEDIZIONE", "COD_DTIP_ORD_TRASF", String.class));
@@ -403,6 +422,8 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagCanCreateInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_CREATE_INVENTARIO", Boolean.class, Boolean.TRUE));
dbSettingsModelIstance.setFlagCanAddUnknownItemsInventario(getValueFromList(list, "INVENTARIO", "FLAG_CAN_ADD_UNKNOWN_ITEMS", Boolean.class, Boolean.TRUE));
dbSettingsModelIstance.setFlagShouldAskToCreateOrUpdateRowInventario(getValueFromList(list, "INVENTARIO", "FLAG_SHOULD_ASK_TO_CREATE_OR_UPDATE_ROW", Boolean.class, Boolean.FALSE));
dbSettingsModelIstance.setCommessaMagazzino(getValueFromList(list, "SETUP", "COMMESSA_MAGAZZINO", String.class, CommonConst.Config.COMMESSA_MAG));
dbSettingsModelIstance.setFlagGeneraDocumentoSpedizione(getValueFromList(list, "SPEDIZIONE", "GENERA_DOC", Boolean.class, Boolean.FALSE));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null)
@@ -440,7 +461,7 @@ public class SettingsManager {
} else if (clazz == Integer.class && value.getValue() != null) {
return clazz.cast(Integer.parseInt(value.getValue()));
}
} else if(defaultValue == null) {
} else if (defaultValue == null) {
if (clazz == Boolean.class) {
return clazz.cast(Boolean.FALSE);
} else if (clazz == Integer.class) {

View File

@@ -95,10 +95,19 @@ public class SettingsModel {
}
public static class UserSession {
private String deviceId;
private String profileDB;
private AvailableCodMdepsDTO depo;
private Integer defaultOrdinamentoPickingAccettazione = 0;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getProfileDB() {
return profileDB;
}

View File

@@ -27,9 +27,11 @@ public class UpdatesManager {
public void init(AppCompatActivity activityContext) {
this.mContext = activityContext;
final String baseEndpoint = SettingsManager.i().getServer().getProtocol() + "://" + SettingsManager.i().getServer().getHost() +
(SettingsManager.i().getServer().getPort() > 0 ? ":" + SettingsManager.i().getServer().getPort() : "");
String currentVersionUrl = SettingsManager.i().getServer().getProtocol() + "://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/currentVersion";
String currentDownloadUrl = SettingsManager.i().getServer().getProtocol() + "://" + SettingsManager.i().getServer().getHost() + ":" + SettingsManager.i().getServer().getPort() + "/ems-api/wms/android-release.apk";
final String currentVersionUrl = baseEndpoint + "/ems-api/wms/currentVersion";
final String currentDownloadUrl = baseEndpoint + "/ems-api/wms/android-release.apk";
AppUpdater appUpdater = new AppUpdater(mContext)

View File

@@ -40,7 +40,6 @@ public class PermissionsHelper {
}
String[] permissionArray = new String[permissionsToAsk.size()];
permissionsToAsk.toArray(permissionArray);

View File

@@ -0,0 +1,12 @@
package it.integry.integrywmsnative.core.utility;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.settings.SettingsManager;
public class UntMisUtils {
public static boolean shouldBeShowInColli(MtbAart mtbAart) {
return SettingsManager.iDB().isFlagForceAllToColli() || (mtbAart == null || !mtbAart.isFlagQtaCnfFissaBoolean());
}
}

View File

@@ -41,9 +41,15 @@ public class UtilityServer {
public static void isEmsApiAvailable(final String protocol, final String serverAddress, final int serverTCPport, final Runnable onComplete, final RunnableArgs<Exception> onFailed) {
new Thread(() -> {
String url = null;
if(serverTCPport > 0)
url = String.format("%s://%s:%d/ems-api/system/ok", protocol, serverAddress, serverTCPport);
else
url = String.format("%s://%s/ems-api/system/ok", protocol, serverAddress);
Request request = new Request.Builder()
.url(String.format("%s://%s:%d/ems-api/system/ok", protocol, serverAddress, serverTCPport))
.url(url)
.build();
try {

View File

@@ -290,7 +290,7 @@ public class MainAccettazioneFragment extends BaseFragment implements ISearchabl
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
+ "<br /><br />" +
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.ordered_articles, (int) artsCounter)),
null,
() -> {

View File

@@ -6,6 +6,8 @@ import android.text.Html;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import com.google.firebase.installations.FirebaseInstallations;
import java.util.List;
import javax.inject.Inject;
@@ -16,6 +18,7 @@ import it.integry.integrywmsnative.SplashActivity;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
@@ -29,6 +32,9 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
@Inject
LoginViewModel mViewmodel;
@Inject
SystemRESTConsumer systemRESTConsumer;
public BindableString username = new BindableString();
public BindableString password = new BindableString();
@@ -119,9 +125,13 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen
private void showProfileDBSelectionDialog(final String protocol, final String host, final int port, final List<String> availableProfiles) {
Runnable onComplete = () -> {
SettingsManager.update();
startSplashActivity();
FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> {
SettingsManager.i().getUserSession().setDeviceId(fid.getResult());
SettingsManager.update();
systemRESTConsumer.registerDevice(this::startSplashActivity, this::onError);
});
};
loginButtonEnabled.set(true);

View File

@@ -797,7 +797,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
listModel.setSubDescription(x.getRifOrd());
if(x.getDataConsD() != null) {
if (x.getDataConsD() != null) {
String testataDataConsString = String.format(getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(x.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
listModel.setRightDescription(testataDataConsString);
}
@@ -861,7 +861,7 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, orders.size()), orders.size())
+ "<br />" +
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, codMarts.size())
"<b>" + codMarts.size() + "</b> " + getActivity().getResources().getQuantityString(R.plurals.ordered_articles, codMarts.size())
+ "<br />" +
"<b>" + alreadyRegisteredUL + "</b> " + getActivity().getResources().getQuantityString(R.plurals.already_registered_lu, alreadyRegisteredUL)),
null,

View File

@@ -356,7 +356,7 @@ public class ProdOrdineProduzioneElencoFragment extends BaseFragment implements
DialogSimpleMessageView.makeInfoDialog(getText(R.string.orders).toString(),
Html.fromHtml(String.format(getActivity().getResources().getQuantityString(R.plurals.loaded_orders_message, (int) ordsCounter), ordsCounter)
+ "<br /><br />" +
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.available_articles, (int) artsCounter)),
"<b>" + artsCounter + "</b> " + getActivity().getResources().getQuantityString(R.plurals.ordered_articles, (int) artsCounter)),
null,
() -> {

View File

@@ -195,7 +195,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
Toast.makeText(this, "Articolo aggiunto all'ordine!", Toast.LENGTH_SHORT).show();
}
this.mViewModel.refreshListArticoli(onSuccess);
}, null).show(this.getSupportFragmentManager(), "DialogEditArticoloView");
}, this::onLoadingEnded).show(this.getSupportFragmentManager(), "DialogEditArticoloView");
}
@Override

View File

@@ -10,7 +10,6 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;
import javax.inject.Inject;
@@ -217,6 +216,7 @@ public class PVOrdineAcquistoEditViewModel {
saveAction.run();
}
} else {
articolo.setQtaOrd(articolo.getQtaOrd() > 0f ? articolo.getQtaOrd() : articolo.getQtaCnf());
this.sendOnItemDispatched(articolo, onSuccess);
}
@@ -240,7 +240,6 @@ public class PVOrdineAcquistoEditViewModel {
articolo.setFlagQtaMultipla(art.getFlagQtaMultipla());
articolo.setQtaMinOrdinabile(art.getQtaMinOrdinabile());
articolo.setMerceDaRic(art.getMerceDaRic());
articolo.setQtaCnf(art.getQtaCnf());
articolo.setUntMis(art.getUntMis());
articolo.setDescrizione(art.getDescrizione());
articolo.setDataIns(UtilityDate.getDateInstance());
@@ -250,7 +249,7 @@ public class PVOrdineAcquistoEditViewModel {
articolo.setQtaProposta(art.getQtaProposta());
articolo.setNewNoPromo(art.isNewNoPromo());
articolo.setSystemNote(art.generateSystemNote());
articolo.setQtaOrd(art.getQtaOrd());
articolo.setQtaCnf(art.getQtaCnf() > 0f ? art.getQtaCnf() : 1);
articolo.setCodAlis(art.getCodAlis());
articolo.setCtMaxOrd(BigDecimal.valueOf(art.getCtMaxOrd()));
@@ -279,9 +278,9 @@ public class PVOrdineAcquistoEditViewModel {
}
private List<ArticoloOrdinabileDTO> getNewArticoli() {
return mArticoliGriglia.stream()
return Stream.of(mArticoliGriglia)
.filter(x -> x.getQtaOrd() > 0f)
.collect(Collectors.toList());
.toList();
}
public void orderNewProducts() {

View File

@@ -85,7 +85,7 @@ public class DialogEditArticoloView extends BaseDialogFragment implements Dialog
this.mViewModel
.setListener(this)
.setCurrentArticolo(this.mArticolo)
.setInitialQtaCnf(BigDecimal.valueOf(mArticolo.getQtaCnf()))
.setInitialQtaCnf(BigDecimal.valueOf(mArticolo.getQtaCnf()).setScale(5, RoundingMode.HALF_UP))
.setInitialNumCnf(UtilityBigDecimal.divide(BigDecimal.valueOf(mArticolo.getQtaOrd()), BigDecimal.valueOf(mArticolo.getQtaCnf())).setScale(0, RoundingMode.CEILING))
.setInitialQtaTot(BigDecimal.valueOf(mArticolo.getQtaOrd()));

View File

@@ -14,9 +14,15 @@ import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
@@ -109,6 +115,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
} else {
setGriglia(griglia);
setListaArticoli(listArticoli);
this.onGrigliaRetrieved();
}
}).show(requireActivity().getSupportFragmentManager(), "tag");
@@ -119,6 +126,33 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
titleText.setText(context.getText(R.string.pv_elenco_ordiniA_title_fragment).toString());
}
private void onGrigliaRetrieved() {
if (UtilityString.isNullOrEmpty(mGriglia.getCodAlis())) {
Map<String, Long> downloadedGrids = Stream.of(mListArticoli).collect(Collectors.groupingBy(ArticoloOrdinabileDTO::getCodAlis, Collectors.counting()));
if (downloadedGrids != null && !downloadedGrids.isEmpty()) {
List<String> gridsDetails = Stream.of(downloadedGrids)
.map((el) -> "<b>" + el.getKey() + ":</b> " + el.getValue() + " " + getResources().getQuantityString(R.plurals.available_articles, el.getValue().intValue()))
.toList();
DialogSimpleMessageView.makeInfoDialog(getText(R.string.grid_details).toString(),
Html.fromHtml(
String.format(getResources().getQuantityString(R.plurals.loaded_grids_message, (int) downloadedGrids.size()), downloadedGrids.size())
+ "<br /><br />" +
StringUtils.join(gridsDetails, "<br/>")),
null,
this::fetchOrders)
.show(requireActivity().getSupportFragmentManager(), "downloadedGridDetails");
} else {
fetchOrders();
}
} else {
fetchOrders();
}
}
private void setGriglia(Griglia griglia) {
mGriglia = griglia;
mBinding.fabNewOrder.setVisibility(View.VISIBLE);
@@ -129,7 +163,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
mBinding.descrLis.setText(griglia.getDescrLisa());
}
mBinding.descrDepo.setText(griglia.getDescrDepo());
fetchOrders();
}
private void setListaArticoli(List<ArticoloOrdinabileDTO> listArticoli) {
@@ -161,7 +194,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITi
mBinding.ordiniAEmptyView.setVisibility(ordini == null || ordini.size() <= 0 ? View.VISIBLE : View.GONE);
refreshRenderedOrdini(ordini);
mAdapter.updateItems(mRenderedOrderList);
if (mRenderedOrderList.size() <= 0 && mRedirectToNewOrder) {
if (mRenderedOrderList.isEmpty() && mRedirectToNewOrder) {
createNewOrder();
} else {
mRedirectToNewOrder = false;

View File

@@ -23,6 +23,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloOrdinabileDTO;
import it.integry.integrywmsnative.core.exception.GridNotFoundException;
import it.integry.integrywmsnative.core.exception.GridNotSelectedException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@@ -36,6 +37,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
private DialogScanCodiceGrigliaBinding mBinding;
private int mBarcodeScannerIstanceID;
public boolean canIgnoreGrid;
private final RunnableArgss<Griglia, List<ArticoloOrdinabileDTO>> mOnDialogDismiss;
@@ -53,6 +55,7 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
private DialogScanGrigliaAcquistoView(RunnableArgss<Griglia, List<ArticoloOrdinabileDTO>> onDialogDismiss) {
super();
mOnDialogDismiss = onDialogDismiss;
canIgnoreGrid = SettingsManager.iDB().isFlagConsentiOrdineSenzaGriglia();
}
@NonNull
@@ -80,6 +83,12 @@ public class DialogScanGrigliaAcquistoView extends BaseDialogFragment {
}
public void ignore() {
if (!this.canIgnoreGrid) {
this.onError(new GridNotSelectedException());
return;
}
BarcodeManager.disable();
RunnableArgs<Exception> mOnError = exception -> {

View File

@@ -217,7 +217,8 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
mViewModel.init(
SettingsManager.i().getUser().getFullname(),
SettingsManager.i().getUserSession().getDepo().getCodMdep(),
mCurrentGestione);
mCurrentGestione,
SettingsManager.iDB().isFlagGeneraDocumentoSpedizione());
}
@Override

View File

@@ -57,6 +57,7 @@ public class RettificaGiacenzeViewModel {
private String mCurrentUser;
private String mCurrentCodMdep;
private boolean mIsCreatedLU;
private boolean generaDocIfVendita;
private boolean mAnyEditDone = false;
@@ -74,10 +75,11 @@ public class RettificaGiacenzeViewModel {
}
public void init(String currentUser, String currentCodMdep, GestioneEnum defaultGestione) {
public void init(String currentUser, String currentCodMdep, GestioneEnum defaultGestione, boolean generaDocIfVendita) {
this.mCurrentUser = currentUser;
this.mCurrentCodMdep = currentCodMdep;
this.mDefaultGestione = defaultGestione;
this.generaDocIfVendita = generaDocIfVendita;
this.sendOnLoadingStarted();
@@ -352,7 +354,6 @@ public class RettificaGiacenzeViewModel {
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
// if (!mIsCreatedLU && mCurrentMtbColt.isDocumentPresent()) {
mtbColr
.setQtaCol(BigDecimal.ZERO)
.setNumCnf(BigDecimal.ZERO)
@@ -382,39 +383,6 @@ public class RettificaGiacenzeViewModel {
if (shouldCloseLU) closeLU(true, null);
}, this::sendError);
// } else {
// mtbColr
// .setQtaCol(qtaTot)
// .setQtaCnf(qtaCnf)
// .setNumCnf(numCnf);
//
// MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
// cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
//
// cloneMtbColt.setMtbColr(new ObservableArrayList<>());
//
// cloneMtbColt.getMtbColr().add(mtbColr);
//
// mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
// mtbColr
// .setDataCollo(value.getDataColloS())
// .setNumCollo(value.getNumCollo())
// .setGestione(value.getGestione())
// .setSerCollo(value.getSerCollo())
// .setRiga(value.getMtbColr().get(0).getRiga())
// .setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
// .setMtbAart(pickingObjectDTO.getMtbAart());
//
// mCurrentMtbColt.getMtbColr().add(mtbColr);
//
// this.mAnyEditDone = true;
//
// this.sendOnRowSaved();
// this.sendOnLoadingEnded();
//
// if (shouldCloseLU) closeLU(true, null);
// }, this::sendError);
// }
}
@@ -482,7 +450,7 @@ public class RettificaGiacenzeViewModel {
}
private void createDoc(MtbColt mtbColt, Runnable onComplete) {
if (!(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1)) {
if (!(mtbColt.getGestioneEnum() == GestioneEnum.VENDITA && mtbColt.getSegno() == -1) || !generaDocIfVendita) {
onComplete.run();
return;
}

View File

@@ -47,10 +47,13 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
@Inject
public AppContext appContext;
@Inject
public SystemRESTConsumer systemRESTConsumer;
@Inject
public DialogProgressView mCurrentProgress;
@Inject
public ExecutorService executorService;

View File

@@ -46,6 +46,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UntMisUtils;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
@@ -175,7 +176,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
setSupportActionBar(mBindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mFlagShowCodForn = SettingsManager.iDB().isShowCodFornSpedizione();
mDivideByGrpMerc = SettingsManager.iDB().isGroupShippingByCommodityGroup();
@@ -337,12 +338,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
qtaColWithdrawRows.addAndGet(row.getQtaCol());
});
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
if (!anyLUPresent) {
spedizioneListModel.setGroupTitle(!mEnableFakeGiacenza ? getString(R.string.picking_not_available) : "");
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
@@ -378,15 +378,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
cloneModel.setGroupTitle(String.format("%s: %s", getString(R.string.position_text), UtilityString.isNullOrEmpty(mtbColtToPick.getPosizione()) ? "N.A." : mtbColtToPick.getPosizione()));
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) {
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
cloneModel.setBadge2(mtbColrToDispatch.getCodJcom());
if (mtbColrToDispatch != null) {
if(!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
if (!UtilityString.isNullOrEmpty(x.getSitArtOrdDTO().getCodJcom())) {
cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom()));
}
}
cloneModel.setSourceMtbColr(mtbColrToDispatch);
cloneModel.setSubDescrizione2(String.format(getString(R.string.lu_number_data_text), mtbColtToPick.getNumCollo(), UtilityDate.formatDate(mtbColtToPick.getDataColloD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
cloneModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
BigDecimal numCnfOrdToSubstract = UtilityBigDecimal.getLowerBetween(mtbColrToDispatch.getNumCnf(), numCnfOrdCounter);
@@ -514,9 +518,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
spedizioneListModel.setGroupTitle(groupTitle);
if (!anyLUPresent) {
spedizioneListModel.setBadge2(x.getSitArtOrdDTO().getCodJcom());
spedizioneListModel.setBadge2(getCommessa(x.getSitArtOrdDTO().getCodJcom()));
if (SettingsManager.iDB().isFlagForceAllToColli() || (x.getMtbAart() == null || !x.getMtbAart().isFlagQtaCnfFissaBoolean())) {
if (UntMisUtils.shouldBeShowInColli(x.getMtbAart())) {
spedizioneListModel.setUntMis(UtilityResources.getString(R.string.unt_mis_col));
spedizioneListModel.setQtaTot(x.getSitArtOrdDTO().getNumCnfOrd());
spedizioneListModel.setQtaEvasa(numCnfWithdrawRows.getBigDecimalValue());
@@ -547,9 +551,11 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
MtbColr mtbColrToDispatch = mtbColtToPick.getMtbColr() != null && mtbColtToPick.getMtbColr().size() > 0 ? mtbColtToPick.getMtbColr().get(0) : null;
if (mtbColrToDispatch != null && !UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag())) {
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
cloneModel.setBadge2(mtbColrToDispatch.getCodJcom());
if (mtbColrToDispatch != null) {
if (!UtilityString.isNullOrEmpty(mtbColrToDispatch.getPartitaMag()))
cloneModel.setSubDescrizione1(String.format(getString(R.string.batch_lot_text), mtbColrToDispatch.getPartitaMag()));
cloneModel.setBadge2(getCommessa(mtbColrToDispatch.getCodJcom()));
}
cloneModel.setSourceMtbColr(mtbColrToDispatch);
@@ -632,6 +638,19 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
return sortedList;
}
private String getCommessa(String codJcom) {
var commessaMagazzino = SettingsManager.iDB().getCommessaMagazzino();
if(UtilityString.isNullOrEmpty(commessaMagazzino)) {
return UtilityString.isNull(codJcom, "Magazzino").toUpperCase();
} else {
if(commessaMagazzino.equalsIgnoreCase(codJcom) || codJcom == null)
return "Magazzino".toUpperCase();
else
return codJcom.toUpperCase();
}
}
private boolean isThereAnyItemToPick(List<PickingObjectDTO> dataList) {
return Stream.of(dataList)
.anyMatch(x -> !x.isHidden());

View File

@@ -588,7 +588,9 @@ public class SpedizioneViewModel {
private void executeMagazzinoAutomatico(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
var magazzinoAutomaticoPickableArts = Stream.of(Objects.requireNonNull(this.mPickingList.getValue()))
.filter(x -> Stream.of(x.getMtbColts()).anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())))
.filter(x -> Stream.of(x.getMtbColts()).anyMatch(y -> y.getPosizione() != null && y.getPosizione().equalsIgnoreCase(mtbDepoPosizione.getPosizione())) &&
x.getSitArtOrdDTO() != null &&
UtilityBigDecimal.greaterThan(x.getSitArtOrdDTO().getQtaOrd(), BigDecimal.ZERO))
.toList();
var mtbAarts = Stream.of(magazzinoAutomaticoPickableArts)
@@ -609,6 +611,10 @@ public class SpedizioneViewModel {
.findFirst()
.orElse(null);
if (pickingObjectDTO == null) {
continue;
}
MagazzinoAutomaticoPickItemRequestDTO itemDto = new MagazzinoAutomaticoPickItemRequestDTO(selectedArt.getCodMart())
.setQtaTot(pickingObjectDTO.getSitArtOrdDTO().getQtaOrd())
.setNumCnf(pickingObjectDTO.getSitArtOrdDTO().getNumCnfOrd())
@@ -652,7 +658,12 @@ public class SpedizioneViewModel {
if (mEnableGiacenza) {
Stream.of(pickingList).forEach(pickingObjectDTO -> {
if (Stream.of(pickingObjectDTO.getMtbColts()).anyMatch(x -> Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) && x.getDataColloS().equals(scannedUL.getDataColloS()) && x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) && (scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
if (Stream.of(pickingObjectDTO.getMtbColts())
.anyMatch(x ->
Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE))) {
matchPickingObject.add(pickingObjectDTO);
}
@@ -679,7 +690,13 @@ public class SpedizioneViewModel {
ObservableArrayList<MtbColr> cloneMtbColrs = (ObservableArrayList<MtbColr>) cloneMtbColt.getMtbColr().clone();
Stream.of(cloneMtbColt.getMtbColr()).filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) && UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) && UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) && (!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) || UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag())))).forEach(cloneMtbColrs::remove);
Stream.of(cloneMtbColt.getMtbColr())
.filter(x -> !(UtilityString.equalsIgnoreCase(x.getCodMart(), matchedObject.getSitArtOrdDTO().getCodMart()) &&
UtilityString.equalsIgnoreCase(x.getCodTagl(), matchedObject.getSitArtOrdDTO().getCodTagl()) &&
UtilityString.equalsIgnoreCase(x.getCodCol(), matchedObject.getSitArtOrdDTO().getCodCol()) &&
(!mEnableCheckPartitaMag || UtilityString.equalsIgnoreCase(x.getPartitaMag(), matchedObject.getSitArtOrdDTO().getPartitaMag()) ||
UtilityString.isNullOrEmpty(matchedObject.getSitArtOrdDTO().getPartitaMag()))))
.forEach(cloneMtbColrs::remove);
cloneMtbColt.setMtbColr(cloneMtbColrs);
@@ -1404,7 +1421,7 @@ public class SpedizioneViewModel {
filledMtbColts,
positionedMtbColts -> {
this.askPrint(shouldPrint, positionedMtbColts, () -> {
this.askPrint((shouldPrint && SettingsManager.iDB().isFlagPrintEtichetteOnLUClose()), positionedMtbColts, () -> {
Stream.of(positionedMtbColts)
.filter(x -> !this.mColliRegistrati.contains(x))
.forEach(x -> this.mColliRegistrati.add(x));

View File

@@ -158,8 +158,11 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
mBindings.listaArts.setHasFixedSize(true);
this.mtbColrItemModels = Stream.of(this.inputMtbColrList)
.map(x -> new DialogChooseArtsFromMtbColrListItemModel()
.setMtbColr(x))
.map(x -> {
x.setUntMis(x.getMtbAart() != null && x.getMtbAart().getFirstUntMis() != null ? x.getMtbAart().getFirstUntMis().getUntMis() : null);
return new DialogChooseArtsFromMtbColrListItemModel()
.setMtbColr(x);
})
.toList();
this.hiddenMtbColrItemModels.setValue(this.mtbColrItemModels);
@@ -294,12 +297,12 @@ public class DialogChooseArtsFromMtbColrList extends BaseDialogFragment implemen
this.articoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
this.mBindings.mainSearch.setQuery(barcodeProd, false);
MtbAart articolo = mtbAartList.get(0);
this.mBindings.mainSearch.setQuery(articolo.getCodMart(), false);
this.searchArtInList(mtbAartList.get(0), ean128Model);
onLoadingEnded();
} else {
DialogCommon.showNoArtFoundDialog(mContext, this::onLoadingEnded);

View File

@@ -44,6 +44,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.model.secondary.StatoPartitaMag;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
@@ -513,7 +514,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
BigDecimal taraTot = articolo.getTaraKg() != null ? this.mViewModel.getNumCnf().multiply(articolo.getTaraKg()) : BigDecimal.ZERO;
this.currentTaraTot.set(taraTot);
this.currentPesoLordo.set(this.mViewModel.getQtaTot().add(taraTot));
this.currentPesoLordo.set(UtilityBigDecimal.getGreaterBetween(this.mViewModel.getQtaTot(), BigDecimal.ZERO).add(taraTot));
this.flagShowCnfToTakeLabel.set(false);
}

View File

@@ -483,7 +483,8 @@ public class DialogInputQuantityV2ViewModel {
return false;
}
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd)) {
if (!this.canOverflowOrderQuantity && UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfOrd) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfOrderedQuantityException());
return false;
@@ -495,7 +496,8 @@ public class DialogInputQuantityV2ViewModel {
return false;
}
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable)) {
if (UtilityBigDecimal.greaterThan(this.internalNumCnf, this.totalNumCnfAvailable) &&
!this.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.mListener.onError(new OverflowNumCnfAvailableQuantityException());
return false;

View File

@@ -10,6 +10,7 @@
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="androidx.core.content.ContextCompat" />
<import type="it.integry.integrywmsnative.R" />
<import type="it.integry.integrywmsnative.core.utility.UntMisUtils" />
<import type="android.view.View" />
@@ -206,6 +207,34 @@
android:visibility="@{item.qtaCol != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.numCnf, 0)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280"
tools:visibility="gone"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/unt_mis_col"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
@@ -216,6 +245,7 @@
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
@@ -227,6 +257,7 @@
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -7,10 +7,15 @@
<data>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityDate" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UntMisUtils" />
<variable
name="item"
type="it.integry.integrywmsnative.core.rest.model.giacenza.InstantItemSituationIncomingItemDto" />
@@ -21,16 +26,16 @@
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingVertical="8dp"
android:gravity="center_vertical">
android:paddingVertical="8dp">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toStartOf="@id/qta_box"
android:gravity="center_vertical"
android:layout_toStartOf="@id/qta_box">
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
@@ -53,7 +58,6 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/qta_box"
android:layout_width="wrap_content"
@@ -61,27 +65,58 @@
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="8dp"
android:padding="6dp"
android:background="@drawable/badge_round_corner"
android:backgroundTint="@color/colorPrimary"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="6dp"
android:visibility="@{item.qtaOrd != null ? View.VISIBLE : View.GONE}">
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, 2)}"
android:text="@{UtilityNumber.decimalToString(item.numCnf, 0)}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280"
tools:visibility="gone"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/unt_mis_col"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF"
tools:visibility="gone" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:gravity="center"
android:text="@{UtilityNumber.decimalToString(item.qtaOrd, item.mtbAart.firstUntMis.cifreDec.intValue())}"
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="280.45" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/TextAppearance.AppCompat.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
@@ -89,7 +124,7 @@
android:textAllCaps="true"
android:textColor="@android:color/white"
android:textStyle="bold"
style="@style/TextAppearance.AppCompat.Small"
app:reverse_visibility="@{UntMisUtils.shouldBeShowInColli(item.mtbAart)}"
tools:text="CONF" />
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -254,7 +254,7 @@
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{UtilityNumber.decimalToString(view.articolo.merceDaRic)}"
android:text="@{UtilityNumber.decimalToString(view.articolo.getCnfDaRic())}"
android:textColor="@android:color/black"
android:textStyle="bold"
tools:text="1" />
@@ -285,7 +285,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:text="@{UtilityNumber.decimalToString(view.articolo.getCnfDaRic())}"
android:text="@{UtilityNumber.decimalToString(view.articolo.merceDaRic)}"
android:textColor="@android:color/black"
android:textStyle="bold" />

View File

@@ -8,6 +8,8 @@
<variable
name="view"
type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanGrigliaAcquistoView" />
<import type="android.view.View" />
</data>
<androidx.cardview.widget.CardView
@@ -95,6 +97,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
android:visibility="@{view.canIgnoreGrid ? View.VISIBLE : View.GONE}"
android:onClick="@{() -> view.ignore()}"
app:strokeColor="@color/blue_600"
app:icon="@drawable/baseline_skip_next_24"

View File

@@ -91,6 +91,10 @@
<item quantity="other">articoli</item>
</plurals>
<plurals name="available_articles">
<item quantity="one">articolo disponibile</item>
<item quantity="other">articoli disponibili</item>
</plurals>
<plurals name="ordered_articles">
<item quantity="one">articolo ordinato</item>
<item quantity="other">articoli ordinati</item>
</plurals>
@@ -102,6 +106,10 @@
<item quantity="one"><![CDATA[&#200; stato selezionato <b>%d</b> ordine]]></item>
<item quantity="other"><![CDATA[Sono stati selezionati <b>%d</b> ordini]]></item>
</plurals>
<plurals name="loaded_grids_message">
<item quantity="one"><![CDATA[&#200; stata scaricata <b>%d</b> griglia]]></item>
<item quantity="other"><![CDATA[Sono state scaricate <b>%d</b> griglie]]></item>
</plurals>
<plurals name="pieces">
<item quantity="one">@string/piece</item>
<item quantity="other">pezzi</item>
@@ -442,6 +450,7 @@
<string name="no_arts_in_grid">Nessun articolo presente in griglia</string>
<string name="invalid_quantity_ordered">La quantità ordinata non è valida</string>
<string name="grid_not_found">La griglia selezionata non esiste o non presenta articoli</string>
<string name="grid_not_selected">Nessuna griglia selezionata!</string>
<string name="ignore">Ignora</string>
<string name="max_orderable_qty">Qta massima ordinabile</string>
<string name="max_qty_exceeded">Quantità massima superata</string>
@@ -450,4 +459,5 @@
<string name="invalid_product_ordered">L\'ordine presenta uno o più articoli non validi per la lista selezionata!</string>
<string name="confirm_export_invalid_product"><![CDATA[Uno o più articoli ordinati non sono presenti nella lista selezionata! <br>Sei sicuro di voler continuare?]]></string>
<string name="expired_list_session"><![CDATA[La lista di prodotti è stata caricata troppo tempo fa!]]></string>
<string name="grid_details">Griglie disponibili</string>
</resources>

View File

@@ -9,9 +9,15 @@
</plurals>
<plurals name="available_articles">
<item quantity="one">item available</item>
<item quantity="other">items available</item>
</plurals>
<plurals name="ordered_articles">
<item quantity="one">ordered item</item>
<item quantity="other">ordered items</item>
</plurals>
<plurals name="already_registered_lu">
<item quantity="one">already registered LU</item>
<item quantity="other">already registered LUs</item>
@@ -21,6 +27,10 @@
<item quantity="one"><![CDATA[<b>%d</b> order selected]]></item>
<item quantity="other"><![CDATA[<b>%d</b> orders selected]]></item>
</plurals>
<plurals name="loaded_grids_message">
<item quantity="one"><![CDATA[<b>%d</b> grid downloaded]]></item>
<item quantity="other"><![CDATA[<b>%d</b> grids downloaded]]></item>
</plurals>
<plurals name="pieces">
<item quantity="one">@string/piece</item>
<item quantity="other">pieces</item>
@@ -449,6 +459,7 @@
<string name="no_arts_in_grid">No product found in grid</string>
<string name="invalid_quantity_ordered">Invalid quantity ordered</string>
<string name="grid_not_found">The selected grid was not found or is empty</string>
<string name="grid_not_selected">No grid was selected</string>
<string name="ignore">Ignore</string>
<string name="max_orderable_qty">Max orderable qty</string>
<string name="max_qty_exceeded">Max quantity exceeded</string>
@@ -457,4 +468,5 @@
<string name="invalid_product_ordered">One or more ordered products are not available in the selected list!</string>
<string name="confirm_export_invalid_product"><![CDATA[One or more ordered products are not available in the selected list! <br> Do you wish to continue?]]></string>
<string name="expired_list_session"><![CDATA[The product list was loaded too much time ago!]]></string>
<string name="grid_details">Available grids</string>
</resources>

View File

@@ -19,8 +19,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
lint {
abortOnError false

View File

@@ -3,7 +3,7 @@
buildscript {
ext {
kotlin_version = '1.8.0'
agp_version = '8.1.0-alpha10'
agp_version = '8.0.1'
}
repositories {

View File

@@ -19,8 +19,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
lint {
abortOnError false

View File

@@ -19,8 +19,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
lint {
abortOnError false

View File

@@ -18,8 +18,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
lint {
abortOnError false

View File

@@ -18,8 +18,8 @@ android {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
lint {
abortOnError false