Refactoring datasource di Room.

Refactoring dialog vari.
This commit is contained in:
Giuseppe Scorrano 2022-10-24 18:44:43 +02:00
parent 8216c19338
commit 92d1331630
45 changed files with 814 additions and 1125 deletions

View File

@ -61,6 +61,7 @@ import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEdi
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaComponent;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaModule;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisAComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeComponent;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule; import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeModule;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent; import it.integry.integrywmsnative.gest.spedizione.SpedizioneComponent;
@ -200,6 +201,8 @@ public interface MainApplicationComponent {
DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent(); DialogAskMagazzinoProssimitaComponent.Factory dialogAskMagazzinoProssimitaComponent();
DialogScanLisAComponent.Factory dialogScanLisAComponent();
DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent(); DialogChooseBatchLotComponent.Factory dialogChooseBatchLotComponent();
DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent(); DialogRowInfoProdFabbisognoLineeProdComponent.Factory dialogRowInfoProdFabbisognoLineeProdComponent();

View File

@ -1,6 +1,13 @@
package it.integry.integrywmsnative; package it.integry.integrywmsnative;
import android.app.Application; import android.app.Application;
import android.os.Handler;
import android.os.Looper;
import androidx.core.os.HandlerCompat;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.inject.Singleton; import javax.inject.Singleton;
@ -24,6 +31,7 @@ import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsumer;
@ -50,6 +58,18 @@ public class MainApplicationModule {
return mApplication; return mApplication;
} }
@Provides
@Singleton
public static ExecutorService providesExecutorService() {
return Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
}
@Provides
@Singleton
public static Handler providesMainThreadHandler() {
return HandlerCompat.createAsync(Looper.getMainLooper());
}
@Provides @Provides
@Singleton @Singleton
AppContext providesAppContext() { AppContext providesAppContext() {
@ -172,6 +192,12 @@ public class MainApplicationModule {
return new SystemRESTConsumer(); return new SystemRESTConsumer();
} }
@Provides
@Singleton
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new PVOrdiniAcquistoRESTConsumer(magazzinoRESTConsumer);
}
@Provides @Provides
@Singleton @Singleton
PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) { PosizioniRESTConsumer providesPosizioniRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
@ -186,8 +212,8 @@ public class MainApplicationModule {
@Provides @Provides
@Singleton @Singleton
DocInterniRESTConsumer provideDocInterniRESTConsumer() { DocInterniRESTConsumer provideDocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
return new DocInterniRESTConsumer(); return new DocInterniRESTConsumer(magazzinoRESTConsumer);
} }
@Provides @Provides

View File

@ -1,9 +1,12 @@
package it.integry.integrywmsnative.core.data_store.db; package it.integry.integrywmsnative.core.data_store.db;
import android.app.Application; import android.app.Application;
import android.os.Handler;
import androidx.room.Room; import androidx.room.Room;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
@ -17,7 +20,7 @@ import it.integry.integrywmsnative.core.data_store.db.dao.OrdineDao;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource; import it.integry.integrywmsnative.core.data_store.db.repository.implementations.ArticoliGrigliaDataSource;
@ -92,38 +95,38 @@ public class RoomModule {
@Singleton @Singleton
@Provides @Provides
ArticoloGrigliaRepository providesArticoloGrigliaRepository(ArticoloGrigliaDao articoloGrigliaDao) { ArticoloGrigliaRepository providesArticoloGrigliaRepository(ExecutorService executorService, Handler handler, ArticoloGrigliaDao articoloGrigliaDao) {
return new ArticoliGrigliaDataSource(articoloGrigliaDao); return new ArticoliGrigliaDataSource(executorService, handler, articoloGrigliaDao);
} }
@Singleton @Singleton
@Provides @Provides
ArticoliOrdineRepository providesArticoliOrdineRepository(ArticoloOrdineDao articoloOrdineDao) { ArticoliOrdineRepository providesArticoliOrdineRepository(ExecutorService executorService, Handler handler, ArticoloOrdineDao articoloOrdineDao) {
return new ArticoliOrdineDataSource(articoloOrdineDao); return new ArticoliOrdineDataSource(executorService, handler, articoloOrdineDao);
} }
@Singleton @Singleton
@Provides @Provides
GrigliaRepository providesGrigliaRepository(GrigliaDao grigliaDao) { GrigliaRepository providesGrigliaRepository(ExecutorService executorService, Handler handler, GrigliaDao grigliaDao) {
return new GrigliaDataSource(grigliaDao); return new GrigliaDataSource(executorService, handler, grigliaDao);
} }
@Singleton @Singleton
@Provides @Provides
OrdineRepository providesOrdineRepository(OrdineDao ordineDao) { OrdineRepository providesOrdineRepository(ExecutorService executorService, Handler handler, OrdineDao ordineDao) {
return new OrdineDataSource(ordineDao); return new OrdineDataSource(executorService, handler, ordineDao);
} }
@Singleton @Singleton
@Provides @Provides
MtbColtRepository providesMtbColtRepository(MtbColtDao mtbColtDao) { MtbColtRepository providesMtbColtRepository(ExecutorService executorService, Handler handler, MtbColtDao mtbColtDao) {
return new SqlMtbColtDataSource(mtbColtDao); return new SqlMtbColtDataSource(executorService, handler, mtbColtDao);
} }
@Singleton @Singleton
@Provides @Provides
MtbColrRepository providesMtbColrRepository(MtbColrDao mtbColrDao) { MtbColrDataSource providesMtbColrRepository(ExecutorService executorService, Handler handler, MtbColrDao mtbColrDao) {
return new SqlMtbColrDataSource(mtbColrDao); return new SqlMtbColrDataSource(executorService, handler, mtbColrDao);
} }
} }

View File

@ -9,7 +9,6 @@ import androidx.room.Update;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Dao @Dao
public interface MtbColrDao { public interface MtbColrDao {
@ -26,5 +25,5 @@ public interface MtbColrDao {
void delete(SqlMtbColr mtbColr); void delete(SqlMtbColr mtbColr);
@Query("SELECT * from mtb_colr where id_collo = :idDocument") @Query("SELECT * from mtb_colr where id_collo = :idDocument")
List<SqlMtbColr> getDocumentRows(int idDocument); List<SqlMtbColr> getDocumentRows(long idDocument);
} }

View File

@ -3,19 +3,18 @@ package it.integry.integrywmsnative.core.data_store.db.repository;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface MtbColrRepository { public interface MtbColrDataSource {
void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError); void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void selectAllByDocumentID(long documentID, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError); void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError);
void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError); void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError);
void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError); void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError);
void getDocumentRows(SqlMtbColt sqlMtbColt, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError);
} }

View File

@ -1,5 +1,7 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -9,9 +11,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.inject.Inject; import javax.inject.Inject;
@ -21,24 +22,29 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityHashMap;
public class ArticoliGrigliaDataSource extends Repository implements ArticoloGrigliaRepository { public class ArticoliGrigliaDataSource extends BaseDataSource implements ArticoloGrigliaRepository {
private final ArticoloGrigliaDao mArticoloGrigliaDao; private final ArticoloGrigliaDao mArticoloGrigliaDao;
@Inject @Inject
public ArticoliGrigliaDataSource(ArticoloGrigliaDao articoloGrigliaDao) { public ArticoliGrigliaDataSource(ExecutorService executorService,
Handler handler,
ArticoloGrigliaDao articoloGrigliaDao) {
super(executorService, handler);
this.mArticoloGrigliaDao = articoloGrigliaDao; this.mArticoloGrigliaDao = articoloGrigliaDao;
} }
public void saveArticoliToGriglia(List<ArticoloGriglia> updatedArts, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onFail) { public void saveArticoliToGriglia(List<ArticoloGriglia> updatedArts, Griglia griglia, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
try {
var tmp = calcItemsToInsertAndUpdate(updatedArts);
var toInsert = (List<ArticoloGriglia>) tmp.get("toInsert");
var toUpdate = (List<ArticoloGriglia>) tmp.get("toUpdate");
var codMarts = (List<String>) tmp.get("codMarts");
try {
var tmp = calcItemsToInsertAndUpdate(updatedArts);
var toInsert = UtilityHashMap.<List<ArticoloGriglia>>getValue(tmp, "toInsert");
var toUpdate = UtilityHashMap.<List<ArticoloGriglia>>getValue(tmp, "toUpdate");
var codMarts = UtilityHashMap.<List<String>>getValue(tmp, "codMarts");
executorService.execute(() -> {
mArticoloGrigliaDao.insertAll(toInsert); mArticoloGrigliaDao.insertAll(toInsert);
mArticoloGrigliaDao.updateAll(toUpdate); mArticoloGrigliaDao.updateAll(toUpdate);
@ -46,11 +52,12 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri
List<ArticoloGriglia> toDelete = Stream.of(articoliGriglia).filter(articolo -> !codMarts.contains(articolo.getCodMart())).toList(); List<ArticoloGriglia> toDelete = Stream.of(articoliGriglia).filter(articolo -> !codMarts.contains(articolo.getCodMart())).toList();
mArticoloGrigliaDao.deleteList(toDelete); mArticoloGrigliaDao.deleteList(toDelete);
onSuccess.run(); handler.post(onSuccess);
} catch (Exception e) { });
onFail.run(e);
} } catch (Exception e) {
}); onError.run(e);
}
} }
private HashMap<String, Object> calcItemsToInsertAndUpdate(List<ArticoloGriglia> updatedArts) throws InterruptedException, ExecutionException { private HashMap<String, Object> calcItemsToInsertAndUpdate(List<ArticoloGriglia> updatedArts) throws InterruptedException, ExecutionException {
@ -58,12 +65,11 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri
var toUpdate = new ArrayList<ArticoloGriglia>(); var toUpdate = new ArrayList<ArticoloGriglia>();
var codMarts = new ArrayList<String>(); var codMarts = new ArrayList<String>();
int cores = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(cores);
List<Callable<ArticoloGriglia>> calls = new ArrayList<>(); List<Callable<ArticoloGriglia>> calls = new ArrayList<>();
for (int i = 0; i < updatedArts.size(); i++) { for (int i = 0; i < updatedArts.size(); i++) {
int finalI = i; int finalI = i;
Callable<ArticoloGriglia> callableTask = () -> { Callable<ArticoloGriglia> callableTask = () -> {
var updatedArt = updatedArts.get(finalI); var updatedArt = updatedArts.get(finalI);
Integer id = mArticoloGrigliaDao.getIdArticoloByGrigliaAndBarcodeAndCodMart(updatedArt.getIdGriglia(), updatedArt.getBarCode(), updatedArt.getCodMart()); Integer id = mArticoloGrigliaDao.getIdArticoloByGrigliaAndBarcodeAndCodMart(updatedArt.getIdGriglia(), updatedArt.getBarCode(), updatedArt.getCodMart());
@ -78,7 +84,7 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri
calls.add(callableTask); calls.add(callableTask);
} }
List<Future<ArticoloGriglia>> futures = executor.invokeAll(calls, Long.MAX_VALUE, TimeUnit.MILLISECONDS); List<Future<ArticoloGriglia>> futures = executorService.invokeAll(calls, Long.MAX_VALUE, TimeUnit.MILLISECONDS);
for (Future<ArticoloGriglia> future : futures) { for (Future<ArticoloGriglia> future : futures) {
if (future.isDone()) { if (future.isDone()) {
@ -99,51 +105,38 @@ public class ArticoliGrigliaDataSource extends Repository implements ArticoloGri
return tmp; return tmp;
} }
public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByBarcodeAndGriglia(String barcode, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia), onSuccess, onError);
try {
onSuccess.run(mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
} }
public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByCodMartAndGriglia(String codMart, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(codMart, idGriglia), onSuccess, onError);
try {
onSuccess.run(mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(codMart, idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
} }
public void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByScanAndGriglia(String scan, int idGriglia, RunnableArgs<ArticoloGriglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> {
executorService.execute(() -> {
try { try {
ArticoloGriglia articolo = mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(scan, idGriglia); ArticoloGriglia articolo = mArticoloGrigliaDao.findArticoloByCodMartAndGriglia(scan, idGriglia);
if (articolo == null) { if (articolo == null) {
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(scan, idGriglia); articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(scan, idGriglia);
if (articolo == null) {
String barcode = StringUtils.leftPad(scan, 13, "0");
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia);
}
} }
onSuccess.run(articolo);
if (articolo == null) {
String barcode = StringUtils.leftPad(scan, 13, "0");
articolo = mArticoloGrigliaDao.findArticoloByBarcodeAndGriglia(barcode, idGriglia);
}
final ArticoloGriglia finalArticolo = articolo;
handler.post(() -> onSuccess.run(finalArticolo));
} catch (Exception e) { } catch (Exception e) {
onFail.run(e); onError.run(e);
} }
}); });
} }
public void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onFail) { public void findNewArticoliInGrigla(int idGriglia, RunnableArgs<List<ArticoloGriglia>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia), onSuccess, onError);
try {
onSuccess.run(mArticoloGrigliaDao.getNewArticoliInGriglia(idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
} }
} }

View File

@ -1,11 +1,14 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@ -16,17 +19,20 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineR
import it.integry.integrywmsnative.core.data_store.db.wrappers.ArticoloOrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.ArticoloOrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdineRepository { public class ArticoliOrdineDataSource extends BaseDataSource implements ArticoliOrdineRepository {
private final ArticoloOrdineDao mArticoloOrdineDao; private final ArticoloOrdineDao mArticoloOrdineDao;
@Inject @Inject
public ArticoliOrdineDataSource(ArticoloOrdineDao articoloOrdineDao) { public ArticoliOrdineDataSource(ExecutorService executorService,
Handler handler,
ArticoloOrdineDao articoloOrdineDao) {
super(executorService, handler);
this.mArticoloOrdineDao = articoloOrdineDao; this.mArticoloOrdineDao = articoloOrdineDao;
} }
public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSuccess, RunnableArgs<Exception> onFail) { public void saveArticoliToOrdine(List<ArticoloOrdine> articoli, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { executorService.execute(() -> {
try { try {
List<ArticoloOrdine> toUpdate = new ArrayList<>(); List<ArticoloOrdine> toUpdate = new ArrayList<>();
List<ArticoloOrdine> toInsert = new ArrayList<>(); List<ArticoloOrdine> toInsert = new ArrayList<>();
@ -41,87 +47,72 @@ public class ArticoliOrdineDataSource extends Repository implements ArticoliOrdi
mArticoloOrdineDao.insert(newArt); mArticoloOrdineDao.insert(newArt);
} }
mArticoloOrdineDao.updateAll(toUpdate); mArticoloOrdineDao.updateAll(toUpdate);
onSuccess.run(); handler.post(onSuccess);
} catch (Exception e) { } catch (Exception e) {
onFail.run(e); onError.run(e);
} }
}); });
} }
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) { public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) {
try { execute(() -> mArticoloOrdineDao.update(articolo), onSuccess, onError);
if (articolo.getArticoloOrdineId() != null && articolo.getArticoloOrdineId() > 0) { } else {
mArticoloOrdineDao.update(articolo); execute(() -> mArticoloOrdineDao.insert(articolo), onSuccess, onError);
} else { }
mArticoloOrdineDao.insert(articolo);
}
onSuccess.run();
} catch (Exception e) {
onFail.run(e);
}
});
} }
public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByOrdineAndBarcode(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mArticoloOrdineDao.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode), onSuccess, onError);
try {
ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByOrdineAndBarcode(ordine.getOrdineId(), barcode);
onSuccess.run(articolo);
} catch (Exception e) {
onFail.run(e);
}
});
} }
public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { executorService.execute(() -> {
try { try {
String scannedCode = barcode; ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), barcode);
ArticoloOrdine articolo = mArticoloOrdineDao.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null) { if (articolo == null) {
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode); articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), barcode);
if (articolo == null) {
scannedCode = StringUtils.leftPad(scannedCode, 13, '0');
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
} }
onSuccess.run(articolo);
if (articolo == null) {
String scannedCode = StringUtils.leftPad(barcode, 13, '0');
articolo = mArticoloOrdineDao.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
final ArticoloOrdine finalArticolo = articolo;
handler.post(() -> onSuccess.run(finalArticolo));
} catch (Exception e) { } catch (Exception e) {
onFail.run(e); onError.run(e);
} }
}); });
} }
public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) { public void findArticoliByOrdine(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { executorService.execute(() -> {
try { try {
List<ArticoloOrdineWrapper> list = mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId()); List<ArticoloOrdineWrapper> list = mArticoloOrdineDao.findArticoliByOrdine(ordine.getOrdineId());
onLoad.run(Stream.of(list).map(x -> { var tmpList = Stream.of(list).map(x -> {
ArticoloOrdine art = x.getArticoloOrdine(); ArticoloOrdine art = x.getArticoloOrdine();
art.setGgScadenza(x.getGgScadenza()); art.setGgScadenza(x.getGgScadenza());
art.setGiacenza(x.getGiacenza()); art.setGiacenza(x.getGiacenza());
art.setQtaProposta(x.getQtaProposta()); art.setQtaProposta(x.getQtaProposta());
art.setQtaPrevistaVendita(x.getQtaPrevistaVendita()); art.setQtaPrevistaVendita(x.getQtaPrevistaVendita());
return art; return art;
}).toList()); }).toList();
handler.post(() -> onSuccess.run(tmpList));
} catch (Exception e) { } catch (Exception e) {
onError.run(e); onError.run(e);
} }
}); });
} }
public void deleteArticolo(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onError) { public void deleteArticolo(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mArticoloOrdineDao.delete(articolo),
try { onSuccess,
mArticoloOrdineDao.delete(articolo); onError);
onSave.run();
} catch (Exception e) {
onError.run(e);
}
});
} }
} }

View File

@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import java.util.concurrent.ExecutorService;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableWithReturn;
public class BaseDataSource {
protected final ExecutorService executorService;
protected final Handler handler;
protected BaseDataSource(ExecutorService executorService, Handler handler) {
this.executorService = executorService;
this.handler = handler;
}
protected <T> void execute(RunnableWithReturn<T> query, RunnableArgs<T> onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
var data = query.run();
handler.post(() -> onSuccess.run(data));
} catch (Exception ex) {
handler.post(() -> onError.run(ex));
}
});
}
protected void execute(Runnable query, Runnable onSuccess, RunnableArgs<Exception> onError) {
executorService.execute(() -> {
try {
query.run();
handler.post(onSuccess);
} catch (Exception ex) {
handler.post(() -> onError.run(ex));
}
});
}
}

View File

@ -1,6 +1,9 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@ -10,60 +13,40 @@ import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaReposito
import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.GrigliaWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class GrigliaDataSource extends Repository implements GrigliaRepository { public class GrigliaDataSource extends BaseDataSource implements GrigliaRepository {
private final GrigliaDao mGrigliaDao; private final GrigliaDao mGrigliaDao;
@Inject @Inject
public GrigliaDataSource(GrigliaDao grigliaDao) { public GrigliaDataSource(ExecutorService executorService,
Handler handler,
GrigliaDao grigliaDao) {
super(executorService, handler);
this.mGrigliaDao = grigliaDao; this.mGrigliaDao = grigliaDao;
} }
public void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError) { public void selectAll(RunnableArgs<List<Griglia>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mGrigliaDao::getAll, onSuccess, onError);
try {
onSuccess.run(mGrigliaDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void findByCodAlis(String codAlis, RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError) { public void findByCodAlis(String codAlis, RunnableArgs<GrigliaWrapper> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(() -> mGrigliaDao.findByCodAlis(codAlis), onSuccess, onError);
try {
onSuccess.run(mGrigliaDao.findByCodAlis(codAlis));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onFail) { public void saveGriglia(Griglia griglia, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> { if (griglia.getGrigliaId() <= 0) {
try { execute(() -> (int) mGrigliaDao.insert(griglia), grigliaId -> {
if (griglia.getGrigliaId() <= 0) { griglia.setGrigliaId(grigliaId);
griglia.setGrigliaId((int) mGrigliaDao.insert(griglia)); onSuccess.run(grigliaId);
} else { }, onFail);
mGrigliaDao.update(griglia); } else {
} execute(() -> mGrigliaDao.update(griglia), () -> onSuccess.run(griglia.getGrigliaId()), onFail);
onSuccess.run(griglia.getGrigliaId()); }
} catch (Exception e) {
onFail.run(e);
}
});
} }
public void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onFail) { public void findGrigliaById(int idGriglia, RunnableArgs<Griglia> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mGrigliaDao.findGrigliaById(idGriglia), onSuccess, onError);
try {
onLoad.run(mGrigliaDao.findGrigliaById(idGriglia));
} catch (Exception e) {
onFail.run(e);
}
});
} }
} }

View File

@ -1,6 +1,9 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@ -12,79 +15,46 @@ import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGrigl
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class OrdineDataSource extends Repository implements OrdineRepository { public class OrdineDataSource extends BaseDataSource implements OrdineRepository {
private OrdineDao mOrdineDao; private final OrdineDao mOrdineDao;
@Inject @Inject
public OrdineDataSource(OrdineDao ordineDao) { public OrdineDataSource(ExecutorService executorService,
Handler handler,
OrdineDao ordineDao) {
super(executorService, handler);
this.mOrdineDao = ordineDao; this.mOrdineDao = ordineDao;
} }
public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) { public void selectAll(RunnableArgs<List<Ordine>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mOrdineDao::getAll, onSuccess, onError);
try {
onSuccess.run(mOrdineDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) { public void selectAllTransmitted(RunnableArgs<List<OrdineWithGriglia>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mOrdineDao::getAllTrasnmitted, onSuccess, onError);
try {
onSuccess.run(mOrdineDao.getAllTrasnmitted());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) { public void selectAllOpenOrders(Griglia griglia, RunnableArgs<List<OrdineWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(() -> mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()), onSuccess, onError);
try {
onSuccess.run(mOrdineDao.getAllOpenOrdersByGriglia(griglia.getGrigliaId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) { public void insert(Ordine ordine, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mOrdineDao.insert(ordine),
try { ordineId -> onSuccess.run(ordineId.intValue()),
Long id = mOrdineDao.insert(ordine); onError);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
} }
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) { public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mOrdineDao.update(ordine),
try { () -> onSuccess.run(ordine),
mOrdineDao.update(ordine); onError);
onSuccess.run(ordine);
} catch (Exception e) {
onError.run(e);
}
});
} }
public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onError) { public void delete(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mOrdineDao.delete(ordine),
try { onSuccess,
mOrdineDao.delete(ordine); onError);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
} }
} }

View File

@ -1,9 +0,0 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
public class Repository {
public void execute(Runnable query){
new Thread(query).start();
}
}

View File

@ -1,77 +1,53 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao; import it.integry.integrywmsnative.core.data_store.db.dao.MtbColrDao;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColrDataSource extends Repository implements MtbColrRepository { public class SqlMtbColrDataSource extends BaseDataSource implements MtbColrDataSource {
private MtbColrDao mMtbColrDao; private final MtbColrDao mMtbColrDao;
@Inject @Inject
public SqlMtbColrDataSource(MtbColrDao mtbColrDao) { public SqlMtbColrDataSource(ExecutorService executorService,
Handler handler,
MtbColrDao mtbColrDao) {
super(executorService, handler);
this.mMtbColrDao = mtbColrDao; this.mMtbColrDao = mtbColrDao;
} }
public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) { public void selectAll(RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mMtbColrDao::getAll, onSuccess, onError);
try { }
onSuccess.run(mMtbColrDao.getAll());
} catch (Exception e) { public void selectAllByDocumentID(long documentId, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
onError.run(e); execute(() -> mMtbColrDao.getDocumentRows(documentId), onSuccess, onError);
}
};
execute(query);
} }
public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) { public void insert(SqlMtbColr mtbColr, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColrDao.insert(mtbColr),
try { mtbColrId -> onSuccess.run(mtbColrId.intValue()),
Long id = mMtbColrDao.insert(mtbColr); onError);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
} }
public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) { public void update(SqlMtbColr mtbColr, RunnableArgs<SqlMtbColr> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColrDao.update(mtbColr),
try { () -> onSuccess.run(mtbColr),
mMtbColrDao.update(mtbColr); onError);
onSuccess.run(mtbColr);
} catch (Exception e) {
onError.run(e);
}
});
} }
public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) { public void delete(SqlMtbColr mtbColr, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColrDao.delete(mtbColr),
try { onSuccess,
mMtbColrDao.delete(mtbColr); onError);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
}
public void getDocumentRows(SqlMtbColt document, RunnableArgs<List<SqlMtbColr>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> {
try {
onSuccess.run(mMtbColrDao.getDocumentRows(document.getId()));
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
} }

View File

@ -1,7 +1,10 @@
package it.integry.integrywmsnative.core.data_store.db.repository.implementations; package it.integry.integrywmsnative.core.data_store.db.repository.implementations;
import android.os.Handler;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@ -11,82 +14,53 @@ import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtReposito
import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.DocInternoWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class SqlMtbColtDataSource extends Repository implements MtbColtRepository { public class SqlMtbColtDataSource extends BaseDataSource implements MtbColtRepository {
private MtbColtDao mMtbColtDao; private final MtbColtDao mMtbColtDao;
@Inject @Inject
public SqlMtbColtDataSource(MtbColtDao mtbColtDao) { public SqlMtbColtDataSource(ExecutorService executorService,
Handler handler,
MtbColtDao mtbColtDao) {
super(executorService, handler);
this.mMtbColtDao = mtbColtDao; this.mMtbColtDao = mtbColtDao;
} }
public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) { public void selectAll(RunnableArgs<List<SqlMtbColt>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mMtbColtDao::getAll, onSuccess, onError);
try {
onSuccess.run(mMtbColtDao.getAll());
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) { public void insert(SqlMtbColt mtbColt, RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColtDao.insert(mtbColt),
try { mtbColtId -> onSuccess.run(mtbColtId.intValue()),
Long id = mMtbColtDao.insert(mtbColt); onError);
onSuccess.run(id.intValue());
} catch (Exception e) {
onError.run(e);
}
});
} }
public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) { public void update(SqlMtbColt mtbColt, RunnableArgs<SqlMtbColt> onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColtDao.update(mtbColt),
try { () -> onSuccess.run(mtbColt),
mMtbColtDao.update(mtbColt); onError);
onSuccess.run(mtbColt);
} catch (Exception e) {
onError.run(e);
}
});
} }
public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) { public void delete(SqlMtbColt mtbColt, Runnable onSuccess, RunnableArgs<Exception> onError) {
execute(() -> { execute(() -> mMtbColtDao.delete(mtbColt),
try { onSuccess,
mMtbColtDao.delete(mtbColt); onError);
onSuccess.run();
} catch (Exception e) {
onError.run(e);
}
});
} }
@Override @Override
public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) { public void getLocalDocumentsByCodDtip(String codDtip, String codAnag, String codVdes, Date dataDoc, String numDoc, RunnableArgs<List<DocInternoWrapper>> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(() -> mMtbColtDao.getLocalDocumentsByCodDtip(codDtip, codAnag, codVdes, dataDoc, numDoc),
try { onSuccess,
onSuccess.run(mMtbColtDao.getLocalDocumentsByCodDtip(codDtip,codAnag,codVdes,dataDoc,numDoc)); onError);
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }
@Override @Override
public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) { public void getNextNumCollo(RunnableArgs<Integer> onSuccess, RunnableArgs<Exception> onError) {
Runnable query = () -> { execute(mMtbColtDao::getNextNumCollo,
try { onSuccess,
onSuccess.run(mMtbColtDao.getNextNumCollo()); onError);
} catch (Exception e) {
onError.run(e);
}
};
execute(query);
} }

View File

@ -10,7 +10,13 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@Singleton @Singleton
public class MagazzinoRESTConsumer extends _BaseRESTConsumer { public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
@ -62,4 +68,23 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
} }
}); });
} }
public <T> void saveTerminalino(SaveDTO saveDTO, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed){
MagazzinoRESTConsumerService service = RESTBuilder.getService(MagazzinoRESTConsumerService.class);
service.<T>saveTerminalino(saveDTO)
.enqueue(new Callback<ServiceRESTResponse<T>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<T>> call, Response<ServiceRESTResponse<T>> response) {
analyzeAnswer(response, "saveTerminalino", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<T>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
} }

View File

@ -1,4 +1,14 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface MagazzinoRESTConsumerService { public interface MagazzinoRESTConsumerService {
@POST("SM2SaveTerminalinoWMS")
<T> Call<ServiceRESTResponse<T>> saveTerminalino(@Body SaveDTO saveDTO);
} }

View File

@ -23,9 +23,9 @@ import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityThread; import it.integry.integrywmsnative.core.utility.UtilityThread;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.ArtDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.OrdineDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.OrdineDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -33,12 +33,14 @@ import retrofit2.Response;
@Singleton @Singleton
public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer { public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
private final MagazzinoRESTConsumer magazzinoRESTConsumer;
public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) { public PVOrdiniAcquistoRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
getArticoliListinoStatic(codAlis, onSuccess, onFailed); this.magazzinoRESTConsumer = magazzinoRESTConsumer;
} }
public static void getArticoliListinoStatic(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) { public void getArticoliListino(String codAlis, RunnableArgs<GrigliaDTO> onSuccess, RunnableArgs<Exception> onFailed) {
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService ordiniARestService
.getArticoliListino(codAlis) .getArticoliListino(codAlis)
@ -97,43 +99,26 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
} }
ordineDTO.setChiaveGriglia(griglia.getCodAlis()); ordineDTO.setChiaveGriglia(griglia.getCodAlis());
ordineDTO.setDataConsD(UtilityDate.getDateInstance()); ordineDTO.setDataCons(UtilityDate.getDateInstance());
ordineDTO.setArtRows(artRows); ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O"); saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO); saveDTO.setOrdineDTO(ordineDTO);
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class); magazzinoRESTConsumer.<DtbOrdt>saveTerminalino(saveDTO, data -> {
ordiniARestService if(data == null) {
.saveOrdine(saveDTO) onFailed.run(new Exception("Nessun ordine generato"));
.enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() { return;
@Override }
public void onResponse(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Response<List<ServiceRESTResponse<DtbOrdt>>> response) {
if (response.body() != null && response.body().size() > 0) {
analyzeListOfAnswers(response, "getArticoliListino", dtoList -> {
if (dtoList.size() > 0) {
DtbOrdt dto = dtoList.get(0);
ordine.setTransmitted(true);
ordine.setTransmissionDate(UtilityDate.getDateInstance());
ordine.setGestione(dto.getGestione());
ordine.setDataOrdS(dto.getDataOrd());
ordine.setCodMdep(dto.getCodMdep());
ordine.setNumOrd(dto.getNumOrd());
onSuccess.run(ordine);
} else {
onFailed.run(new Exception("Nessun ordine generato"));
}
}, onFailed);
}
}
@Override ordine.setTransmitted(true);
public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>> call, Throwable t) { ordine.setTransmissionDate(UtilityDate.getDateInstance());
Log.e("saveOrdineTerminale_pv", t.toString()); ordine.setGestione(data.getGestione());
UtilityLogger.error(new Exception(t)); ordine.setDataOrdS(data.getDataOrd());
onFailed.run(new Exception(t)); ordine.setCodMdep(data.getCodMdep());
} ordine.setNumOrd(data.getNumOrd());
}); onSuccess.run(ordine);
}, onFailed);
} }
@ -144,7 +129,7 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
dto.setCodMart(art.getCodMart()); dto.setCodMart(art.getCodMart());
dto.setBarcode(art.getBarCode()); dto.setBarcode(art.getBarCode());
dto.setDescrizione(art.getDescrizione()); dto.setDescrizione(art.getDescrizione());
dto.setDataInsD(art.getDataIns()); dto.setDataIns(art.getDataIns());
dto.setUntMis(art.getUntMis()); dto.setUntMis(art.getUntMis());
dto.setSystemNote(art.getSystemNote()); dto.setSystemNote(art.getSystemNote());
dto.setQta(BigDecimal.valueOf(art.getQtaOrd())); dto.setQta(BigDecimal.valueOf(art.getQtaOrd()));

View File

@ -1,14 +1,8 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.GrigliaDTO;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Header;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -16,7 +10,4 @@ public interface PVOrdiniAcquistoRESTConsumerService {
@POST("SM2GetElencoArticoli") @POST("SM2GetElencoArticoli")
Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis); Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis);
@POST("SM2SaveTerminalino")
Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO);
} }

View File

@ -27,6 +27,8 @@ public class ArtDTO {
private Date dataScad; private Date dataScad;
private String systemNote;
public Integer getRigaOrd() { public Integer getRigaOrd() {
return rigaOrd; return rigaOrd;
} }
@ -114,4 +116,12 @@ public class ArtDTO {
public void setDataScad(Date dataScad) { public void setDataScad(Date dataScad) {
this.dataScad = dataScad; this.dataScad = dataScad;
} }
public String getSystemNote() {
return systemNote;
}
public void setSystemNote(String systemNote) {
this.systemNote = systemNote;
}
} }

View File

@ -27,7 +27,7 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache; import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableInteger; import it.integry.integrywmsnative.core.di.BindableInteger;
import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.di.BindableString;
@ -56,7 +56,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
private static final String DATA_KEY_TIPO_DOC = "docType"; private static final String DATA_KEY_TIPO_DOC = "docType";
@Inject @Inject
MtbColrRepository documentRowsRepository; MtbColrDataSource documentRowsRepository;
@Inject @Inject
DocInterniEditFormViewModel viewModel; DocInterniEditFormViewModel viewModel;

View File

@ -2,10 +2,8 @@ package it.integry.integrywmsnative.gest.contab_doc_interni.edit_form;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniComponent;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
@Module(subcomponents = DocInterniEditFormComponent.class) @Module(subcomponents = DocInterniEditFormComponent.class)
@ -13,7 +11,7 @@ public class DocInterniEditFormModule {
@Provides @Provides
DocInterniEditFormViewModel docInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrRepository mtbColrRepository, MtbColtRepository mtbColtRepository) { DocInterniEditFormViewModel docInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrDataSource mtbColrRepository, MtbColtRepository mtbColtRepository) {
return new DocInterniEditFormViewModel(docInterniRESTConsumer,mtbColrRepository, mtbColtRepository); return new DocInterniEditFormViewModel(docInterniRESTConsumer,mtbColrRepository, mtbColtRepository);
} }

View File

@ -17,7 +17,7 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt; import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColrDataSource;
import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository; import it.integry.integrywmsnative.core.data_store.db.repository.MtbColtRepository;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener; import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@ -33,7 +33,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
public class DocInterniEditFormViewModel { public class DocInterniEditFormViewModel {
@Inject @Inject
MtbColrRepository mtbColrRepository; MtbColrDataSource mtbColrRepository;
@Inject @Inject
MtbColtRepository mtbColtRepository; MtbColtRepository mtbColtRepository;
private final DocInterniRESTConsumer docInterniRESTConsumer; private final DocInterniRESTConsumer docInterniRESTConsumer;
@ -46,7 +46,7 @@ public class DocInterniEditFormViewModel {
public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>(); public MutableLiveData<List<SqlMtbColr>> docRows = new MutableLiveData<>();
@Inject @Inject
public DocInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrRepository mtbColrRepository, MtbColtRepository mtbColtRepository) { public DocInterniEditFormViewModel(DocInterniRESTConsumer docInterniRESTConsumer, MtbColrDataSource mtbColrRepository, MtbColtRepository mtbColtRepository) {
this.docInterniRESTConsumer = docInterniRESTConsumer; this.docInterniRESTConsumer = docInterniRESTConsumer;
this.mtbColrRepository = mtbColrRepository; this.mtbColrRepository = mtbColrRepository;
this.mtbColtRepository = mtbColtRepository; this.mtbColtRepository = mtbColtRepository;
@ -77,7 +77,7 @@ public class DocInterniEditFormViewModel {
public void fetchDocumentRows() { public void fetchDocumentRows() {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
mtbColrRepository.getDocumentRows(this.document.getValue(), rows -> { mtbColrRepository.selectAllByDocumentID(this.document.getValue().getId(), rows -> {
this.docRows.postValue(rows); this.docRows.postValue(rows);
this.listener.onRowsChanged(rows); this.listener.onRowsChanged(rows);
this.sendOnLoadingEnded(); this.sendOnLoadingEnded();

View File

@ -6,6 +6,7 @@ import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
@ -18,6 +19,12 @@ import retrofit2.Response;
@Singleton @Singleton
public class DocInterniRESTConsumer extends _BaseRESTConsumer { public class DocInterniRESTConsumer extends _BaseRESTConsumer {
private final MagazzinoRESTConsumer magazzinoRESTConsumer;
public DocInterniRESTConsumer(MagazzinoRESTConsumer magazzinoRESTConsumer) {
this.magazzinoRESTConsumer = magazzinoRESTConsumer;
}
public void getDocInterniSetup(RunnableArgs<DocInterniSetupDTO> onComplete, RunnableArgs<Exception> onFailed) { public void getDocInterniSetup(RunnableArgs<DocInterniSetupDTO> onComplete, RunnableArgs<Exception> onFailed) {
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class); DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class);
service.getSetupDocInterni().enqueue(new Callback<>() { service.getSetupDocInterni().enqueue(new Callback<>() {
@ -50,17 +57,6 @@ public class DocInterniRESTConsumer extends _BaseRESTConsumer {
public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed){ public void saveDoc(SaveDTO saveDTO, RunnableArgs<JsonObject> onComplete, RunnableArgs<Exception> onFailed){
DocInterniRESTConsumerService service = RESTBuilder.getService(DocInterniRESTConsumerService.class); magazzinoRESTConsumer.saveTerminalino(saveDTO, onComplete, onFailed);
service.save(saveDTO).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<JsonObject>> call, Response<ServiceRESTResponse<JsonObject>> response) {
analyzeAnswer(response, "saveDoc", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<JsonObject>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
} }
} }

View File

@ -1,15 +1,10 @@
package it.integry.integrywmsnative.gest.contab_doc_interni.rest; package it.integry.integrywmsnative.gest.contab_doc_interni.rest;
import com.google.gson.JsonObject;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.SaveDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO; import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -18,9 +13,6 @@ public interface DocInterniRESTConsumerService {
@GET("getDocInterniSetup") @GET("getDocInterniSetup")
Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni(); Call<ServiceRESTResponse<DocInterniSetupDTO>> getSetupDocInterni();
@POST("SM2SaveTerminalinoWMS")
Call<ServiceRESTResponse<JsonObject>> save(@Body SaveDTO saveDTO);
@GET("getElencoArticoli") @GET("getElencoArticoli")
Call<ServiceRESTResponse<GrigliaAcquistiDTO>> fetchProducts(@Query("codDtip") String codDtip, @Query("codMgrp") String codMgrp, @Query("gestione") String gestione); Call<ServiceRESTResponse<GrigliaAcquistiDTO>> fetchProducts(@Query("codDtip") String codDtip, @Query("codMgrp") String codMgrp, @Query("gestione") String gestione);
} }

View File

@ -49,7 +49,6 @@ public class DialogAskMagazzinoProssimitaView extends BaseDialogFragment impleme
private DialogAskMagazzinoProssimitaView(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) { private DialogAskMagazzinoProssimitaView(RunnableArgsss<JtbFasi, Date, Date> onItemSelected) {
super(); super();
this.mOnItemSelected = onItemSelected; this.mOnItemSelected = onItemSelected;
} }

View File

@ -35,7 +35,7 @@ import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoL
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.DialogEditArticoloView;
import it.integry.integrywmsnative.ui.FabMenuCustomAnimations; import it.integry.integrywmsnative.ui.FabMenuCustomAnimations;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -152,24 +152,22 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
private void selectAction(ArticoloOrdine articoloOrdine) { private void selectAction(ArticoloOrdine articoloOrdine) {
mBinding.closeActivityFab.close(false); mBinding.closeActivityFab.close(false);
BarcodeManager.disable(); BarcodeManager.disable();
runOnUiThread(() -> {
DialogAskAction.make(this, DialogAskActionView.newInstance(articoloOrdine.getDescrizione(),
articoloOrdine.getDescrizione(), articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(),
articoloOrdine.getQtaOrd() + " " + articoloOrdine.getUntMis(), () -> {
() -> { this.mViewModel.checkArticolo(mOrdine, articoloOrdine.getCodMart(),
this.mViewModel.checkArticolo(mOrdine, articoloOrdine.getCodMart(), artOrd -> {
artOrd -> { this.onItemDispatched(artOrd);
this.onItemDispatched(artOrd); BarcodeManager.enable();
BarcodeManager.enable(); },
}, this::onError);
this::onError); BarcodeManager.enable();
BarcodeManager.enable(); },
}, () -> {
() -> { this.deleteArticolo(articoloOrdine);
this.deleteArticolo(articoloOrdine); BarcodeManager.enable();
BarcodeManager.enable(); }).show(getSupportFragmentManager(), "tag");
}).show();
});
} }

View File

@ -1,7 +1,5 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit; package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
@ -13,14 +11,6 @@ import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsu
@Module(subcomponents = PVOrdineAcquistoEditComponent.class) @Module(subcomponents = PVOrdineAcquistoEditComponent.class)
public class PVOrdineAcquistoEditModule { public class PVOrdineAcquistoEditModule {
@Provides
@Singleton
PVOrdiniAcquistoRESTConsumer providesPVOrdiniAcquistoRESTConsumer() {
return new PVOrdiniAcquistoRESTConsumer();
}
@Provides @Provides
PVOrdineAcquistoEditViewModel providesPvOrdineAcquistoEditViewModel(OrdineRepository ordineRepository, PVOrdineAcquistoEditViewModel providesPvOrdineAcquistoEditViewModel(OrdineRepository ordineRepository,
GrigliaRepository grigliaRepository, GrigliaRepository grigliaRepository,

View File

@ -1,146 +0,0 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
import java.math.BigDecimal;
import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class ArtDTO {
private Integer rigaOrd;
private String codMart;
private String barcode;
private String descrizione;
private String dataIns;
private String untMis;
private BigDecimal qta;
private BigDecimal qtaCnf;
private BigDecimal colli;
private String partitaMag;
private String dataScad;
private String systemNote;
public Integer getRigaOrd() {
return rigaOrd;
}
public void setRigaOrd(Integer rigaOrd) {
this.rigaOrd = rigaOrd;
}
public String getCodMart() {
return codMart;
}
public void setCodMart(String codMart) {
this.codMart = codMart;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
public String getDataIns() {
return dataIns;
}
public Date getDataInsD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataIns());
}
public void setDataIns(String dataIns) {
this.dataIns = dataIns;
}
public void setDataInsD(Date dataIns) {
setDataIns(UtilityDate.formatDate(dataIns, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
public String getUntMis() {
return untMis;
}
public void setUntMis(String untMis) {
this.untMis = untMis;
}
public BigDecimal getQta() {
return qta;
}
public void setQta(BigDecimal qta) {
this.qta = qta;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public void setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
}
public BigDecimal getColli() {
return colli;
}
public void setColli(BigDecimal colli) {
this.colli = colli;
}
public String getPartitaMag() {
return partitaMag;
}
public void setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
}
public String getDataScad() {
return dataScad;
}
public void setDataScad(String dataScad) {
this.dataScad = dataScad;
}
public Date getDataScadD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataScad());
}
public void setDataScadD(Date dataScad) {
setDataScad(UtilityDate.formatDate(dataScad, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
public String getSystemNote() {
return systemNote;
}
public ArtDTO setSystemNote(String systemNote) {
this.systemNote = systemNote;
return this;
}
}

View File

@ -1,46 +0,0 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineDTO {
private String chiaveGriglia;
private String dataCons;
private List<ArtDTO> artRows;
public String getChiaveGriglia() {
return chiaveGriglia;
}
public void setChiaveGriglia(String chiaveGriglia) {
this.chiaveGriglia = chiaveGriglia;
}
public String getDataCons() {
return dataCons;
}
public void setDataCons(String dataCons) {
this.dataCons = dataCons;
}
public List<ArtDTO> getArtRows() {
return artRows;
}
public void setArtRows(List<ArtDTO> artRows) {
this.artRows = artRows;
}
public Date getDataConsD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataCons());
}
public void setDataConsD(Date dataCons) {
setDataCons(UtilityDate.formatDate(dataCons, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
}
}

View File

@ -1,24 +0,0 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto;
public class SaveDTO {
private String gestione = "O";
private OrdineDTO ordineDTO;
public String getGestione() {
return gestione;
}
public void setGestione(String gestione) {
this.gestione = gestione;
}
public OrdineDTO getOrdineDTO() {
return ordineDTO;
}
public void setOrdineDTO(OrdineDTO ordineDTO) {
this.ordineDTO = ordineDTO;
}
}

View File

@ -12,7 +12,6 @@ import android.widget.Toast;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList; import java.util.ArrayList;
@ -30,27 +29,24 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGriglia
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository; import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper; import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity; import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment; import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.PVOrdineAcquistoEditActivity;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisAView;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.ui.OrdineAcquistoPvOpenListAdapter;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration; import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
import it.integry.integrywmsnative.view.dialogs.DialogAskAction; import it.integry.integrywmsnative.view.dialogs.DialogAskActionView;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView; import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitledFragment, IScrollableFragment { public class PVOrdiniAcquistoGrigliaFragment extends BaseFragment implements ITitledFragment, IScrollableFragment {
private FragmentPvOrdiniAcquistoBinding mBinding; private FragmentPvOrdiniAcquistoBinding mBinding;
private OrdineAcquistoPvHelper mHelper;
private Griglia mGriglia; private Griglia mGriglia;
private OrdineAcquistoPvOpenListAdapter mAdapter; private OrdineAcquistoPvOpenListAdapter mAdapter;
private DialogProgressView mCurrentProgress; private DialogProgressView mCurrentProgress;
@ -71,14 +67,15 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
@Inject @Inject
OrdineRepository mOrdineRepository; OrdineRepository mOrdineRepository;
@Inject
PVOrdiniAcquistoGrigliaViewModel mPvOrdiniAcquistoGrigliaViewModel;
public PVOrdiniAcquistoGrigliaFragment() { public PVOrdiniAcquistoGrigliaFragment() {
// Gets appComponent from MyApplication available in the base Gradle module // Gets appComponent from MyApplication available in the base Gradle module
MainApplication.appComponent MainApplication.appComponent
.pvOrdineAcquistoGrigliaComponent() .pvOrdineAcquistoGrigliaComponent()
.create() .create()
.inject(this); .inject(this);
} }
public static PVOrdiniAcquistoGrigliaFragment newInstance() { public static PVOrdiniAcquistoGrigliaFragment newInstance() {
@ -95,23 +92,20 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_pv_ordini_acquisto, container, false);
mBinding.setViewmodel(this); mBinding.setViewmodel(this);
mHelper = new OrdineAcquistoPvHelper(requireActivity(), mGrigliaRepository, mArticoloGrigliaRepository, mArticoliOrdineRepository, mOrdineRepository);
init(); init();
initRecyclerView(); initRecyclerView();
return mBinding.getRoot(); return mBinding.getRoot();
} }
private void init() { private void init() {
BarcodeManager.enable(); BarcodeManager.enable();
DialogScanLisA.make(requireActivity(), mGrigliaRepository, mHelper, griglia -> { DialogScanLisAView.newInstance(griglia -> {
if (griglia == null) { if (griglia == null) {
((IPoppableActivity) requireActivity()).pop(); ((IPoppableActivity) requireActivity()).pop();
} else { } else {
setGriglia(griglia); setGriglia(griglia);
} }
}).show(); }).show(requireActivity().getSupportFragmentManager(), "tag");
} }
@ -132,18 +126,15 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
} }
private void fetchOrders() { private void fetchOrders() {
this.openProgress(); this.onLoadingStarted();
mOrdineRepository.selectAllOpenOrders(mGriglia, (ordini) -> requireActivity().runOnUiThread(() -> { mOrdineRepository.selectAllOpenOrders(mGriglia, ordini -> {
this.closeProgress(); this.onLoadingEnded();
setOrdini(ordini);
}), (e) -> { requireActivity().runOnUiThread(() -> {
this.closeProgress(); setOrdini(ordini);
String errorMessage = e.getMessage(); });
requireActivity().runOnUiThread(() -> DialogSimpleMessageView }, this::onError);
.makeErrorDialog(new SpannableString(errorMessage), null, null)
.show(requireActivity().getSupportFragmentManager(), "tag"));
});
} }
private void setOrdini(List<OrdineWrapper> ordini) { private void setOrdini(List<OrdineWrapper> ordini) {
@ -164,7 +155,6 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private void initRecyclerView() { private void initRecyclerView() {
mBinding.ordiniAApertiMainList.setHasFixedSize(true); mBinding.ordiniAApertiMainList.setHasFixedSize(true);
mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(requireActivity())); mBinding.ordiniAApertiMainList.setLayoutManager(new LinearLayoutManager(requireActivity()));
SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireActivity(), SimpleDividerItemDecoration.VERTICAL); SimpleDividerItemDecoration itemDecorator = new SimpleDividerItemDecoration(requireActivity(), SimpleDividerItemDecoration.VERTICAL);
@ -180,11 +170,11 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
private void selectAction(Ordine ordine) { private void selectAction(Ordine ordine) {
requireActivity().runOnUiThread(() -> DialogAskAction.make(requireActivity(), DialogAskActionView.newInstance(Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(),
Html.fromHtml(String.format(this.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN))).toString(), ordine.getCountArticoli() + " articoli",
ordine.getCountArticoli() + " articoli", () -> this.editOrdine(ordine),
() -> this.editOrdine(ordine), () -> this.deleteOrdine(ordine))
() -> this.deleteOrdine(ordine)).show()); .show(requireActivity().getSupportFragmentManager(), "tag");
} }
@ -192,18 +182,16 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
String text = "Stai per eliminare un ordine sei sicuro?"; String text = "Stai per eliminare un ordine sei sicuro?";
DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> requireActivity().runOnUiThread(() -> { DialogSimpleMessageView.makeWarningDialog(new SpannableString(Html.fromHtml(text)), null, () -> requireActivity().runOnUiThread(() -> {
this.openProgress(); this.onLoadingStarted();
mHelper.deleteOrder(ordine, () -> { mPvOrdiniAcquistoGrigliaViewModel.deleteOrder(ordine, () -> {
requireActivity().runOnUiThread(() -> { requireActivity().runOnUiThread(() -> {
this.closeProgress(); this.onLoadingEnded();
Toast.makeText(requireActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT).show(); Toast.makeText(requireActivity(), "Ordine eliminato!", Toast.LENGTH_SHORT).show();
fetchOrders(); fetchOrders();
}); });
}, e -> { }, this::onError);
this.closeProgress();
requireActivity().runOnUiThread(() -> UtilityExceptions.defaultException(requireActivity(), e));
});
}), () -> { }), () -> {
}).show(requireActivity().getSupportFragmentManager(), "tag"); }).show(requireActivity().getSupportFragmentManager(), "tag");
} }
@ -213,15 +201,12 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
} }
public void createNewOrder() { public void createNewOrder() {
this.openProgress(); this.onLoadingStarted();
mHelper.createNewOrder(mGriglia, order -> {
this.closeProgress(); mPvOrdiniAcquistoGrigliaViewModel.createNewOrder(mGriglia, order -> {
this.onLoadingEnded();
requireActivity().runOnUiThread(() -> editOrdine(order)); requireActivity().runOnUiThread(() -> editOrdine(order));
}, e -> requireActivity().runOnUiThread(() -> { }, this::onError);
UtilityExceptions.defaultException(requireActivity(), e);
this.closeProgress();
}
));
} }
@Override @Override
@ -251,21 +236,4 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
this.mOnPreDestroyList.add(onPreDestroy); this.mOnPreDestroyList.add(onPreDestroy);
} }
protected void openProgress() {
requireActivity().runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(requireActivity());
}
});
}
protected void closeProgress() {
requireActivity().runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
}
} }

View File

@ -1,7 +1,23 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto; package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import dagger.Module; import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
@Module(subcomponents = PVOrdiniAcquistoGrigliaComponent.class) @Module(subcomponents = PVOrdiniAcquistoGrigliaComponent.class)
public class PVOrdiniAcquistoGrigliaModule { public class PVOrdiniAcquistoGrigliaModule {
@Provides
PVOrdiniAcquistoGrigliaViewModel providesPvOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
ArticoloGrigliaRepository articoloGrigliaRepository,
OrdineRepository ordineRepository,
GrigliaRepository grigliaRepository){
return new PVOrdiniAcquistoGrigliaViewModel(pvOrdiniAcquistoRESTConsumer, articoloGrigliaRepository, ordineRepository, grigliaRepository);
}
} }

View File

@ -0,0 +1,47 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class PVOrdiniAcquistoGrigliaViewModel {
private final PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
private final ArticoloGrigliaRepository articoloGrigliaRepository;
private final OrdineRepository ordineRepository;
private final GrigliaRepository grigliaRepository;
@Inject
public PVOrdiniAcquistoGrigliaViewModel(PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer,
ArticoloGrigliaRepository articoloGrigliaRepository,
OrdineRepository ordineRepository,
GrigliaRepository grigliaRepository) {
this.pvOrdiniAcquistoRESTConsumer = pvOrdiniAcquistoRESTConsumer;
this.articoloGrigliaRepository = articoloGrigliaRepository;
this.ordineRepository = ordineRepository;
this.grigliaRepository = grigliaRepository;
}
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
Ordine ordine = new Ordine();
ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId());
ordine.setOrderNewProducts(true);
ordineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
onSuccess.run(ordine);
}, onError);
}
public void deleteOrder(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onFail) {
ordineRepository.delete(ordine, onSuccess, onFail);
}
}

View File

@ -1,130 +0,0 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import androidx.fragment.app.FragmentActivity;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
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.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
public class DialogScanLisA {
private FragmentActivity mContext;
private BaseDialog mDialog;
private DialogProgressView mCurrentProgress;
private final DialogScanCodiceGrigliaBinding mBinding;
private RunnableArgs<Griglia> mOnDialogDismiss;
private OrdineAcquistoPvHelper mHelper;
private GrigliaRepository mGrigliaRepository;
private Griglia mGriglia;
private DialogScanLisA(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs<Griglia> onDialogDismiss) {
mOnDialogDismiss = null;
mContext = context;
mGrigliaRepository = grigliaRepository;
mHelper = helper;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mGriglia = null;
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_codice_griglia, null, false);
mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot());
mDialog.setCanceledOnTouchOutside(false);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mOnDialogDismiss = onDialogDismiss;
initBarcode();
}
public static Dialog make(FragmentActivity context, GrigliaRepository grigliaRepository, OrdineAcquistoPvHelper helper, RunnableArgs<Griglia> onDialogDismiss) {
return new DialogScanLisA(context, grigliaRepository, helper, onDialogDismiss).mDialog;
}
private void initBarcode() {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(mContext, ex, false)));
mDialog.setBarcodeListener(true);
mDialog.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable();
mOnDialogDismiss.run(mGriglia);
});
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
this.openProgress();
Context context = mContext;
RunnableArgs<Exception> mOnError = exception -> {
mContext.runOnUiThread(() -> {
this.closeProgress();
UtilityExceptions.defaultException(context, exception);
BarcodeManager.enable();
});
};
RunnableArgs<Griglia> onGrigliaAvailable = griglia -> {
mContext.runOnUiThread(() -> {
this.closeProgress();
mGriglia = griglia;
mDialog.dismiss();
});
};
mGrigliaRepository.findByCodAlis(data.getStringValue(), griglia -> {
if (griglia != null) {
griglia.getGriglia().setCountArticoli(griglia.getCountArticoli());
mHelper.updateGriglia(griglia.getGriglia(), onGrigliaAvailable, mOnError);
} else {
mHelper.downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable, mOnError);
}
}, mOnError);
};
protected void openProgress() {
mContext.runOnUiThread(() -> {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(mContext);
}
});
}
protected void closeProgress() {
mContext.runOnUiThread(() -> {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
});
}
}

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import dagger.Subcomponent;
@Subcomponent
public interface DialogScanLisAComponent {
@Subcomponent.Factory
interface Factory {
DialogScanLisAComponent create();
}
void inject(DialogScanLisAView dialogScanLisAView);
}

View File

@ -0,0 +1,166 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
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.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
public class DialogScanLisAView extends BaseDialogFragment {
private DialogScanCodiceGrigliaBinding mBinding;
private int mBarcodeScannerIstanceID;
private final RunnableArgs<Griglia> mOnDialogDismiss;
@Inject
PVOrdiniAcquistoRESTConsumer pvOrdiniAcquistoRESTConsumer;
@Inject
ArticoloGrigliaRepository articoloGrigliaRepository;
@Inject
GrigliaRepository grigliaRepository;
private Griglia mGriglia;
public static DialogScanLisAView newInstance(RunnableArgs<Griglia> onDialogDismiss) {
return new DialogScanLisAView(onDialogDismiss);
}
private DialogScanLisAView(RunnableArgs<Griglia> onDialogDismiss) {
super();
mOnDialogDismiss = onDialogDismiss;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
this.initBarcode();
MainApplication.appComponent
.dialogScanLisAComponent()
.create()
.inject(this);
mBinding = DataBindingUtil.inflate(LayoutInflater.from(requireContext()), R.layout.dialog_scan_codice_griglia, null, false);
mBinding.setLifecycleOwner(this);
var alertDialogBuilder = new MaterialAlertDialogBuilder(requireContext())
.setView(mBinding.getRoot())
.setCancelable(true);
var alertDialog = alertDialogBuilder.create();
alertDialog.setCanceledOnTouchOutside(true);
return alertDialog;
}
private void initBarcode() {
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessful(onScanSuccessfull)
.setOnScanFailed(this::onError));
this.setBarcodeListener(true);
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
BarcodeManager.removeCallback(mBarcodeScannerIstanceID);
mOnDialogDismiss.run(mGriglia);
super.onDismiss(dialog);
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
this.onLoadingStarted();
RunnableArgs<Exception> mOnError = exception -> {
this.onError(exception);
BarcodeManager.enable();
};
RunnableArgs<Griglia> onGrigliaAvailable = griglia -> {
this.onLoadingEnded();
mGriglia = griglia;
dismiss();
};
grigliaRepository.findByCodAlis(data.getStringValue(), grigliaWrapper -> {
if (grigliaWrapper != null) {
var griglia = grigliaWrapper.getGriglia();
griglia.setCountArticoli(grigliaWrapper.getCountArticoli());
updateGriglia(griglia, onGrigliaAvailable, mOnError);
} else {
downloadAndSaveLisA(data.getStringValue(), onGrigliaAvailable, mOnError);
}
}, mOnError);
};
public void downloadAndSaveLisA(String codAlis, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFailed) {
Griglia griglia = new Griglia();
griglia.setCodAlis(codAlis);
updateGriglia(griglia, onSave, onFailed);
}
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSaved, RunnableArgs<Exception> onFailed) {
pvOrdiniAcquistoRESTConsumer.getArticoliListino(griglia.getCodAlis(), dto -> {
if (dto.getGrigliaAcquistiChild().size() <= 0) {
onFailed.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli"));
return;
}
griglia.setDescrLisa(dto.getDescrLisa());
griglia.setDescrDepo(dto.getDescrDepo());
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
grigliaRepository.saveGriglia(griglia, id -> {
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFailed);
}, onFailed);
}, onFailed);
}
private void saveLisAToGriglia(List<ArticoloDTO> articoli, Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
List<ArticoloGriglia> articoliGriglia = new ArrayList<>();
for (ArticoloDTO articolo : articoli) {
ArticoloGriglia toSave = articolo.toArticoloGriglia();
toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave);
}
articoloGrigliaRepository.saveArticoliToGriglia(articoliGriglia, griglia, () -> onSave.run(griglia), onFail);
}
}

View File

@ -1,86 +0,0 @@
package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliOrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.ArticoloGrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
public class OrdineAcquistoPvHelper {
private Activity mContext;
private GrigliaRepository mGrigliaRepository;
private ArticoloGrigliaRepository mArticoliGrigliaRepository;
private ArticoliOrdineRepository mArticoliOrdineRepository;
private OrdineRepository mOrdineRepository;
public OrdineAcquistoPvHelper(Activity context, GrigliaRepository grigliaRepository, ArticoloGrigliaRepository articoloGrigliaRepository, ArticoliOrdineRepository articoliOrdineRepository, OrdineRepository ordineRepository) {
this.mContext = context;
this.mGrigliaRepository = grigliaRepository;
this.mArticoliGrigliaRepository = articoloGrigliaRepository;
this.mArticoliOrdineRepository = articoliOrdineRepository;
this.mOrdineRepository = ordineRepository;
}
public void downloadAndSaveLisA(String codAlis, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
Griglia griglia = new Griglia();
griglia.setCodAlis(codAlis);
updateGriglia(griglia, onSave, onFail);
}
public void updateGriglia(Griglia griglia, RunnableArgs<Griglia> onSaved, RunnableArgs<Exception> onFail) {
PVOrdiniAcquistoRESTConsumer.getArticoliListinoStatic(griglia.getCodAlis(), dto -> {
mContext.runOnUiThread(() -> {
if (dto.getGrigliaAcquistiChild().size() <= 0) {
onFail.run(new Exception("La griglia selezionata (" + griglia.getCodAlis() + ") non esiste o non presenta articoli"));
return;
}
griglia.setDescrLisa(dto.getDescrLisa());
griglia.setDescrDepo(dto.getDescrDepo());
griglia.setCountArticoli(dto.getGrigliaAcquistiChild().size());
mGrigliaRepository.saveGriglia(griglia, id -> {
saveLisAToGriglia(dto.getGrigliaAcquistiChild(), griglia, onSaved, onFail);
}, onFail);
});
}, onFail);
}
private void saveLisAToGriglia(List<ArticoloDTO> articoli, Griglia griglia, RunnableArgs<Griglia> onSave, RunnableArgs<Exception> onFail) {
List<ArticoloGriglia> articoliGriglia = new ArrayList<>();
for (ArticoloDTO articolo : articoli) {
ArticoloGriglia toSave = articolo.toArticoloGriglia();
toSave.setIdGriglia(griglia.getGrigliaId());
articoliGriglia.add(toSave);
}
mArticoliGrigliaRepository.saveArticoliToGriglia(articoliGriglia, griglia, () -> onSave.run(griglia), onFail);
}
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
Ordine ordine = new Ordine();
ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId());
ordine.setOrderNewProducts(true);
mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
onSuccess.run(ordine);
}, onError);
}
public void deleteOrder(Ordine ordine, Runnable onSuccess, RunnableArgs<Exception> onFail) {
mOrdineRepository.delete(ordine, onSuccess, onFail);
}
}

View File

@ -1,58 +0,0 @@
package it.integry.integrywmsnative.view.dialogs;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.databinding.DialogAskActionEditDeleteBinding;
public class DialogAskAction {
private Activity mContext;
private Dialog mDialog;
private Runnable mOnEditSelected;
private Runnable mOnDeleteSelected;
private DialogAskAction(Activity context,String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
mContext = context;
mOnEditSelected = onEditSelected;
mOnDeleteSelected = onDeleteSelected;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogAskActionEditDeleteBinding mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_action_edit_delete, null, false);
mBinding.setViewmodel(this);
mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot());
UtilityDialog.setTo90PercentWidth(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBinding.bottomSheetActionsTitle.setText(title);
mBinding.bottomSheetActionsSubtitle.setText(subTitle);
}
public static Dialog make(Activity context, String title, String subtitle, Runnable onEdit, Runnable onDelete) {
return new DialogAskAction(context, title,subtitle,onEdit,onDelete).mDialog;
}
public void onEdit(){
mDialog.dismiss();
mOnEditSelected.run();
}
public void onDelete(){
mDialog.dismiss();
mOnDeleteSelected.run();
}
}

View File

@ -0,0 +1,66 @@
package it.integry.integrywmsnative.view.dialogs;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.databinding.DialogAskActionEditDeleteBinding;
public class DialogAskActionView extends BaseDialogFragment {
private final String mTitle;
private final String mSubtitle;
private final Runnable mOnEditSelected;
private final Runnable mOnDeleteSelected;
public static DialogAskActionView newInstance(String title, String subtitle, Runnable onEdit, Runnable onDelete) {
return new DialogAskActionView(title, subtitle, onEdit, onDelete);
}
private DialogAskActionView(String title, String subTitle, Runnable onEditSelected, Runnable onDeleteSelected) {
super();
mTitle = title;
mSubtitle = subTitle;
mOnEditSelected = onEditSelected;
mOnDeleteSelected = onDeleteSelected;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
DialogAskActionEditDeleteBinding mBinding = DialogAskActionEditDeleteBinding.inflate(LayoutInflater.from(requireContext()), null, false);
mBinding.setLifecycleOwner(this);
mBinding.setViewmodel(this);
var alertDialogBuilder = new MaterialAlertDialogBuilder(requireContext())
.setView(mBinding.getRoot());
mBinding.bottomSheetActionsTitle.setText(mTitle);
mBinding.bottomSheetActionsSubtitle.setText(mSubtitle);
return alertDialogBuilder.create();
}
public void onEdit() {
dismiss();
mOnEditSelected.run();
}
public void onDelete() {
dismiss();
mOnDeleteSelected.run();
}
}

View File

@ -10,7 +10,6 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
@ -20,7 +19,6 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication; 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.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment; import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
@ -62,7 +60,7 @@ public class DialogScanArtView extends BaseDialogFragment implements DialogScanA
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
this.initBarcode(); this.initBarcode();
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_art, container, false); mBindings = DialogScanArtBinding.inflate(inflater, container, false);
mBindings.setLifecycleOwner(this); mBindings.setLifecycleOwner(this);
MainApplication.appComponent MainApplication.appComponent

View File

@ -7,7 +7,7 @@
<data> <data>
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.view.dialogs.DialogAskAction" /> type="it.integry.integrywmsnative.view.dialogs.DialogAskActionView" />
</data> </data>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
@ -16,7 +16,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
app:cardCornerRadius="12dp" app:cardCornerRadius="16dp"
app:cardElevation="0dp"> app:cardElevation="0dp">

View File

@ -29,7 +29,7 @@
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@id/title_icon" android:id="@+id/title_icon"
style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked" style="@style/MaterialAlertDialog.Material3.Title.Icon.CenterStacked"
android:layout_width="36dp" android:layout_width="36dp"
android:layout_height="36dp" android:layout_height="36dp"

View File

@ -8,7 +8,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
app:cardCornerRadius="12dp" app:cardCornerRadius="16dp"
app:cardElevation="0dp"> app:cardElevation="0dp">
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat

View File

@ -3,116 +3,88 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="view"
type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisAView" />
</data>
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/base_root" android:id="@+id/base_root"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp" app:cardCornerRadius="16dp"
app:cardElevation="0dp"> app:cardElevation="0dp">
<LinearLayout
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_blue_300"
android:gravity="center_horizontal">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/title_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_error_white_24dp"
android:layout_margin="24dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/TextViewMaterial.Dialog.HeadlineText" android:orientation="vertical"
android:text="@string/title_open_grid_pv" android:paddingStart="24dp"
android:gravity="center_horizontal"/> android:paddingTop="24dp"
android:paddingEnd="24dp"
android:paddingBottom="12dp">
<LinearLayout <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:gravity="center_horizontal"
android:layout_marginTop="16dp"> android:text="@string/title_open_grid_pv" />
<LinearLayout <androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:orientation="horizontal">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_gravity="center_vertical"
android:weightSum="10"> android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:gravity="center_horizontal"
android:text="@string/scan_grid"
android:textSize="16sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
<ProgressBar <com.google.android.material.button.MaterialButton
android:id="@+id/progressBar" android:id="@+id/button_no"
style="?android:attr/progressBarStyle" style="@style/Button.DangerOutline"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="@string/abort"
android:onClick="@{() -> view.dismiss()}"
app:layout_constraintTop_toTopOf="parent"
app:strokeColor="@color/red_400" />
<androidx.appcompat.widget.AppCompatTextView </androidx.appcompat.widget.LinearLayoutCompat>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_marginStart="8dp"
android:layout_marginEnd="12dp"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
style="@style/TextViewMaterial"
android:text="@string/scan_grid"/>
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
<LinearLayout
android:id="@+id/dialog_scan_or_create_lu__creation_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/ok_left_buttons_guideline"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/ok_right_buttons_guideline"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

View File

@ -2,69 +2,58 @@
<layout xmlns:app="http://schemas.android.com/apk/res-auto"> <layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="it.integry.integrywmsnative.R" /> <import type="it.integry.integrywmsnative.R" />
<variable <variable
name="ordine" name="ordine"
type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" /> type="it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO" />
</data> </data>
<LinearLayout <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:background="?android:attr/selectableItemBackground"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:paddingStart="16dp"
android:layout_marginStart="4dp"
android:layout_marginBottom="4dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="8dp" android:paddingEnd="8dp"
android:orientation="horizontal"> android:paddingBottom="8dp">
<RelativeLayout <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/order_identifier"
style="@android:style/TextAppearance.Small"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp"> android:layout_marginEnd="4dp"
android:layout_toStartOf="@id/data_ord"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@android:color/black"
tools:text="IDENTIFIER" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/data_ord"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:textColor="@color/colorPrimaryGray"
android:textSize="14sp"
tools:text="13 Apr" />
<androidx.appcompat.widget.AppCompatTextView
<androidx.appcompat.widget.AppCompatTextView android:id="@+id/num_arts"
android:id="@+id/order_identifier" style="@android:style/TextAppearance.Small"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/black" android:layout_below="@id/order_identifier"
style="@android:style/TextAppearance.Small" android:layout_marginTop="4dp"
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:layout_toStartOf="@id/data_ord" android:ellipsize="end"
android:ellipsize="end" android:singleLine="true"
android:singleLine="true" tools:text="0 Articoli" />
android:text="aaaaaa" </RelativeLayout>
tools:text="IDENTIFIER"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/data_ord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AppTheme.NewMaterial.Text"
android:textColor="@color/colorPrimaryGray"
android:layout_alignParentEnd="true"
android:textSize="14sp"
tools:text="13 Apr"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/num_arts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Small"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:layout_below="@id/order_identifier"
android:singleLine="true"
android:ellipsize="end"
tools:text="0 Articoli"/>
</RelativeLayout>
</LinearLayout>
</layout> </layout>

View File

@ -341,7 +341,7 @@
<string name="pv_elenco_ordiniA_title_fragment">Purchase Orders</string> <string name="pv_elenco_ordiniA_title_fragment">Purchase Orders</string>
<string name="pv_elenco_ordiniA_transmitted_title_fragment">Transmitted Orders</string> <string name="pv_elenco_ordiniA_transmitted_title_fragment">Transmitted Orders</string>
<string name="title_open_grid_pv">Select grid</string> <string name="title_open_grid_pv">Select grid</string>
<string name="scan_grid">scan the barcode for the wanted <b>grid</b></string> <string name="scan_grid">Scan the barcode for the wanted <b>grid</b></string>
<string name="ordini_a_aperti">Open orders</string> <string name="ordini_a_aperti">Open orders</string>
<string name="ordini_a_aperti_progress">Checking for open orders</string> <string name="ordini_a_aperti_progress">Checking for open orders</string>
<string name="ord_acq_num_articoli"><![CDATA[#<b>%s</b> items]]></string> <string name="ord_acq_num_articoli"><![CDATA[#<b>%s</b> items]]></string>