[SAPORI_VERI]

Ordini di Acquisto da Punto vendita
This commit is contained in:
Valerio Castellana 2019-11-11 09:30:26 +01:00
parent f6fae0e51b
commit ac7cd74d7e
33 changed files with 959 additions and 204 deletions

View File

@ -17,7 +17,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 2, exportSchema = false) @Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class}, version = 1, exportSchema = false)
@TypeConverters({ @TypeConverters({
DateConverter.class DateConverter.class
}) })

View File

@ -26,18 +26,6 @@ public interface ArticoloOrdineDao {
@Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1") @Query("SELECT * FROM articoli_ordine where bar_code = :barcode and id_ordine = :ordine LIMIT 1")
ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode); ArticoloOrdine findArticoloByOrdineAndBarcode(int ordine, String barcode);
@Query( " SELECT articoli_ordine.* " +
" FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " +
" (" +
" articoli_ordine.cod_mart = :scan" +
" OR articoli_ordine.bar_code = :scan" +
" OR articoli_griglia.bar_code = :scan" +
" )" +
" AND articoli_ordine.id_ordine = :ordine " +
" LIMIT 1")
ArticoloOrdine findArticoloByScanAndGriglia(int ordine, String scan);
@Update @Update
void updateAll(List<ArticoloOrdine> toUpdate); void updateAll(List<ArticoloOrdine> toUpdate);
@ -47,4 +35,19 @@ public interface ArticoloOrdineDao {
@Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId") @Query("SELECT * FROM articoli_ordine where id_ordine = :ordineId")
List<ArticoloOrdine> findArticoliByOrdine(int ordineId); List<ArticoloOrdine> findArticoliByOrdine(int ordineId);
@Query("SELECt * from articoli_ordine where cod_mart = :codMart and id_ordine = :ordineId LIMIT 1")
ArticoloOrdine findArticoloByCodMartAndOrdine(int ordineId, String codMart);
@Query( " SELECT articoli_ordine.* " +
" FROM articoli_ordine " +
" LEFT OUTER JOIN articoli_griglia on articoli_ordine.cod_mart = articoli_griglia.cod_mart " +
" WHERE " +
" (" +
" articoli_ordine.bar_code = :barcode" +
" OR articoli_griglia.bar_code = :barcode" +
" )" +
" AND articoli_ordine.id_ordine = :ordineId " +
" LIMIT 1")
ArticoloOrdine findArticoloByBarcodeAndOrdine(int ordineId, String barcode);
} }

View File

@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.data_store.db.dao;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Insert; import androidx.room.Insert;
import androidx.room.Query; import androidx.room.Query;
import androidx.room.Update;
import java.util.List; import java.util.List;
@ -23,4 +24,7 @@ public interface OrdineDao {
@Insert @Insert
Long insert(Ordine ordine); Long insert(Ordine ordine);
@Update
void update(Ordine ordine);
} }

View File

@ -6,6 +6,8 @@ import androidx.room.ForeignKey;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import java.util.Date;
@Entity( @Entity(
tableName = "articoli_griglia", tableName = "articoli_griglia",
indices = { indices = {
@ -157,6 +159,8 @@ public class ArticoloGriglia {
articolo.setQtaCnf(this.getQtaCnf()); articolo.setQtaCnf(this.getQtaCnf());
articolo.setUntMis(this.getUntMis()); articolo.setUntMis(this.getUntMis());
articolo.setDescrizione(this.getDescrizione()); articolo.setDescrizione(this.getDescrizione());
articolo.setDataIns(new Date());
articolo.setQtaOrd(0);
return articolo; return articolo;
} }

View File

@ -6,6 +6,8 @@ import androidx.room.ForeignKey;
import androidx.room.Index; import androidx.room.Index;
import androidx.room.PrimaryKey; import androidx.room.PrimaryKey;
import java.util.Date;
@Entity( @Entity(
tableName = "articoli_ordine", tableName = "articoli_ordine",
indices = { indices = {
@ -57,7 +59,10 @@ public class ArticoloOrdine {
private int idOrdine; private int idOrdine;
@ColumnInfo(name = "qta_ord") @ColumnInfo(name = "qta_ord")
private float qtaOtd; private float qtaOrd;
@ColumnInfo(name = "data_ins")
private Date dataIns;
public int getArticoloOrdineId() { public int getArticoloOrdineId() {
return articoloOrdineId; return articoloOrdineId;
@ -147,11 +152,19 @@ public class ArticoloOrdine {
this.idOrdine = idOrdine; this.idOrdine = idOrdine;
} }
public float getQtaOtd() { public float getQtaOrd() {
return qtaOtd; return qtaOrd;
} }
public void setQtaOtd(float qtaOtd) { public void setQtaOrd(float qtaOrd) {
this.qtaOtd = qtaOtd; this.qtaOrd = qtaOrd;
}
public Date getDataIns() {
return dataIns;
}
public void setDataIns(Date dataIns) {
this.dataIns = dataIns;
} }
} }

View File

@ -8,6 +8,8 @@ import androidx.room.PrimaryKey;
import java.util.Date; import java.util.Date;
import it.integry.integrywmsnative.core.utility.UtilityDate;
@Entity(tableName = "ordini") @Entity(tableName = "ordini")
public class Ordine { public class Ordine {
@ -16,8 +18,8 @@ public class Ordine {
@ColumnInfo(name = "ordine_id") @ColumnInfo(name = "ordine_id")
private int ordineId; private int ordineId;
@ColumnInfo(name = "data_ord") @ColumnInfo(name = "data_ins")
private Date dataOrd; private Date dataIns;
@ColumnInfo(name = "annotazioni") @ColumnInfo(name = "annotazioni")
private String annotazioni; private String annotazioni;
@ -29,6 +31,22 @@ public class Ordine {
@Nullable @Nullable
private Date transmissionDate; private Date transmissionDate;
@ColumnInfo(name = "gestione")
@Nullable
private String gestione;
@ColumnInfo(name = "data_ord")
@Nullable
private Date dataOrd;
@ColumnInfo(name = "num_ord")
@Nullable
private Integer numOrd;
@ColumnInfo(name = "cod_mdep")
@Nullable
private String codMdep;
@Ignore @Ignore
private int countArticoli = 0; private int countArticoli = 0;
@ -43,12 +61,12 @@ public class Ordine {
this.ordineId = ordineId; this.ordineId = ordineId;
} }
public Date getDataOrd() { public Date getDataIns() {
return dataOrd; return dataIns;
} }
public void setDataOrd(Date dataOrd) { public void setDataIns(Date dataIns) {
this.dataOrd = dataOrd; this.dataIns = dataIns;
} }
public String getAnnotazioni() { public String getAnnotazioni() {
@ -91,4 +109,43 @@ public class Ordine {
public void setCountArticoli(int countArticoli) { public void setCountArticoli(int countArticoli) {
this.countArticoli = countArticoli; this.countArticoli = countArticoli;
} }
@Nullable
public String getGestione() {
return gestione;
}
public void setGestione(@Nullable String gestione) {
this.gestione = gestione;
}
@Nullable
public Date getDataOrd() {
return dataOrd;
}
public void setDataOrd(@Nullable Date dataOrd) {
this.dataOrd = dataOrd;
}
@Nullable
public Integer getNumOrd() {
return numOrd;
}
public void setNumOrd(@Nullable Integer numOrd) {
this.numOrd = numOrd;
}
@Nullable
public String getCodMdep() {
return codMdep;
}
public void setCodMdep(@Nullable String codMdep) {
this.codMdep = codMdep; }
public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
}
} }

View File

@ -1,14 +1,13 @@
package it.integry.integrywmsnative.core.data_store.db.repository; package it.integry.integrywmsnative.core.data_store.db.repository;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.GrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia; 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.view_model.ArticoloDTO;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public class ArticoliGrigliaRepository extends Repository{ public class ArticoliGrigliaRepository extends Repository{
@ -63,7 +62,15 @@ public class ArticoliGrigliaRepository extends Repository{
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> onFail ){
execute(()->{ execute(()->{
try{ try{
onSuccess.run(mRepository.findArticoloByScanAndGriglia(scan, idGriglia)); ArticoloGriglia articolo = mRepository.findArticoloByCodMartAndGriglia(scan, idGriglia);
if (articolo == null){
articolo = mRepository.findArticoloByBarcodeAndGriglia(scan,idGriglia);
if (articolo==null){
String barcode= StringUtils.leftPad(scan,13,"0");
articolo = mRepository.findArticoloByBarcodeAndGriglia(barcode,idGriglia);
}
}
onSuccess.run(articolo);
}catch (Exception e){ }catch (Exception e){
onFail.run(e); onFail.run(e);
} }

View File

@ -1,12 +1,12 @@
package it.integry.integrywmsnative.core.data_store.db.repository; package it.integry.integrywmsnative.core.data_store.db.repository;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloGrigliaDao;
import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao; import it.integry.integrywmsnative.core.data_store.db.dao.ArticoloOrdineDao;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloGriglia;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -41,6 +41,20 @@ public class ArticoliOrdineRepository extends Repository {
} }
}); });
} }
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> {
try {
if (articolo.getArticoloOrdineId() > 0) {
mRepository.update(articolo);
} else {
mRepository.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> onFail) {
execute(() -> { execute(() -> {
@ -52,10 +66,18 @@ public class ArticoliOrdineRepository extends Repository {
} }
}); });
} }
public void findArticoloByScanAndGriglia(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) { public void findArticoloByScanAndOrdine(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
execute(() -> { execute(() -> {
try { try {
ArticoloOrdine articolo = mRepository.findArticoloByScanAndGriglia(ordine.getOrdineId(), barcode); String scannedCode = barcode;
ArticoloOrdine articolo = mRepository.findArticoloByCodMartAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null){
articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
if (articolo == null){
scannedCode= StringUtils.leftPad(scannedCode,13,'0');
articolo = mRepository.findArticoloByBarcodeAndOrdine(ordine.getOrdineId(), scannedCode);
}
}
onSuccess.run(articolo); onSuccess.run(articolo);
} catch (Exception e) { } catch (Exception e) {
onFail.run(e); onFail.run(e);

View File

@ -62,4 +62,14 @@ public class OrdineRepository extends Repository{
} }
public void updateOrder(Ordine ordine, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
execute(()->{
try{
mRepository.update(ordine);
onSuccess.run(ordine);
}catch (Exception e){
onError.run(e);
}
});
}
} }

View File

@ -4,17 +4,27 @@ import android.util.Log;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.repository.OrdineRepository;
import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO; import it.integry.integrywmsnative.core.data_store.db.view_model.ArticoloDTO;
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.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbOrdt;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.ArtDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.OrdineDTO;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dto.SaveDTO;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@ -40,13 +50,13 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
.withoutNulls() .withoutNulls()
.forEach(art -> { .forEach(art -> {
List<ArticoloDTO> inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList(); List<ArticoloDTO> inList = Stream.of(griglia.getGrigliaAcquistiChild()).filter(x -> x.getCodMart().equalsIgnoreCase(art)).toList();
if (inList.size() > 1){ if (inList.size() > 1) {
for (ArticoloDTO articolo : inList){ for (ArticoloDTO articolo : inList) {
if (!articolo.getBarCode().endsWith(articolo.getCodMart())){ if (!articolo.getBarCode().endsWith(articolo.getCodMart())) {
listaArticoli.add(articolo); listaArticoli.add(articolo);
} }
} }
}else{ } else {
listaArticoli.add(inList.get(0)); listaArticoli.add(inList.get(0));
} }
}); });
@ -64,4 +74,73 @@ public class PVOrdiniAcquistoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static void saveOrdine(Ordine ordine, List<ArticoloOrdine> articoli, Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onFailed) {
SaveDTO saveDTO = new SaveDTO();
OrdineDTO ordineDTO = new OrdineDTO();
List<ArtDTO> artRows = new ArrayList<>();
int i = 0;
for (ArticoloOrdine art : articoli) {
i++;
artRows.add(convertArtToDTO(art,i));
}
ordineDTO.setChiaveGriglia(griglia.getCodAlis());
ordineDTO.setDataConsD(new Date());
ordineDTO.setArtRows(artRows);
saveDTO.setGestione("O");
saveDTO.setOrdineDTO(ordineDTO);
PVOrdiniAcquistoRESTConsumerService ordiniARestService = RESTBuilder.getService(PVOrdiniAcquistoRESTConsumerService.class);
ordiniARestService
.saveOrdine(saveDTO, SettingsManager.i().userSession.profileDB, SettingsManager.i().user.username, SettingsManager.i().user.password)
.enqueue(new Callback<List<ServiceRESTResponse<DtbOrdt>>>() {
@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(new Date());
ordine.setGestione(dto.getGestione());
ordine.setDataOrdS(dto.getDataOrd());
ordine.setCodMdep(dto.getCodMdep());
ordine.setNumOrd(dto.getNumOrd());
OrdineRepository repository = new OrdineRepository();
repository.updateOrder(ordine,onSuccess,onFailed);
}else{
onFailed.run(new Exception("Nessun ordine generato"));
}
}, onFailed);
}
}
@Override
public void onFailure(Call<List<ServiceRESTResponse<DtbOrdt>>>call, Throwable t) {
Log.e("saveOrdineTerminale_pv", t.toString());
UtilityLogger.errorMe(new Exception(t));
onFailed.run(new Exception(t));
}
});
}
private static ArtDTO convertArtToDTO(ArticoloOrdine art, int rigaOrd) {
ArtDTO dto = new ArtDTO();
dto.setRigaOrd(rigaOrd);
dto.setCodMart(art.getCodMart());
dto.setBarcode(art.getBarCode());
dto.setDescrizione(art.getDescrizione());
dto.setDataInsD(art.getDataIns());
dto.setUntMis(art.getUntMis());
dto.setQta(BigDecimal.valueOf(art.getQtaOrd()));
dto.setQtaCnf(BigDecimal.valueOf(art.getQtaCnf()));
dto.setColli(BigDecimal.ZERO);
return dto;
}
} }

View File

@ -1,9 +1,13 @@
package it.integry.integrywmsnative.core.rest.consumers; package it.integry.integrywmsnative.core.rest.consumers;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; 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.Header;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query; import retrofit2.http.Query;
@ -14,5 +18,5 @@ public interface PVOrdiniAcquistoRESTConsumerService {
Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); Call<ServiceRESTResponse<GrigliaDTO>> getArticoliListino(@Query("chiaveGriglia") String codAlis, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
@POST("SM2SaveTerminalino") @POST("SM2SaveTerminalino")
Call<ServiceRESTResponse<Ordine>> saveOrdine(@Query("barcode") String barcodeProd,@Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password); Call<List<ServiceRESTResponse<DtbOrdt>>> saveOrdine(@Body SaveDTO saveDTO, @Query("profileDb") String profileDb, @Header("username") String username, @Header("password") String password);
} }

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.core.rest.consumers;
import android.util.Log; import android.util.Log;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.rest.CommonRESTException; import it.integry.integrywmsnative.core.rest.CommonRESTException;
@ -14,11 +15,11 @@ import retrofit2.Response;
public class _BaseRESTConsumer { public class _BaseRESTConsumer {
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<T> callback){ public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<T> callback) {
if(response.isSuccessful()) { if (response.isSuccessful()) {
if(response.body() != null) { if (response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) { if (response.body().getEsito() == EsitoType.OK) {
if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage())); callback.onFailed(new Exception(response.body().getErrorMessage()));
} else { } else {
@ -43,7 +44,7 @@ public class _BaseRESTConsumer {
} }
} }
public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed){ public static <T> void analyzeAnswer(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
analyzeAnswer(response, logTitle, new ISimpleOperationCallback<T>() { analyzeAnswer(response, logTitle, new ISimpleOperationCallback<T>() {
@Override @Override
public void onSuccess(T value) { public void onSuccess(T value) {
@ -58,11 +59,11 @@ public class _BaseRESTConsumer {
} }
public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<List<T>> callback){ public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, final ISimpleOperationCallback<List<T>> callback) {
if(response.isSuccessful()) { if (response.isSuccessful()) {
if(response.body() != null) { if (response.body() != null) {
if(response.body().getEsito() == EsitoType.OK) { if (response.body().getEsito() == EsitoType.OK) {
if(!UtilityString.isNullOrEmpty(response.body().getErrorMessage())){ if (!UtilityString.isNullOrEmpty(response.body().getErrorMessage())) {
callback.onFailed(new Exception(response.body().getErrorMessage())); callback.onFailed(new Exception(response.body().getErrorMessage()));
} else { } else {
@ -84,7 +85,7 @@ public class _BaseRESTConsumer {
} }
} }
public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed){ public static <T> void analyzeAnswerList(Response<ServiceRESTResponse<T>> response, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
analyzeAnswerList(response, logTitle, new ISimpleOperationCallback<List<T>>() { analyzeAnswerList(response, logTitle, new ISimpleOperationCallback<List<T>>() {
@Override @Override
public void onSuccess(List<T> value) { public void onSuccess(List<T> value) {
@ -98,4 +99,35 @@ public class _BaseRESTConsumer {
}); });
} }
public static <T> void analyzeListOfAnswers(Response<List<ServiceRESTResponse<T>>> responseList, String logTitle, RunnableArgs<List<T>> onComplete, RunnableArgs<Exception> onFailed) {
if (responseList.isSuccessful()) {
if (responseList.body() != null) {
List<T> analyzedList = new ArrayList<>();
for (ServiceRESTResponse<T> response : responseList.body()){
if (response.getEsito() == EsitoType.OK) {
if (!UtilityString.isNullOrEmpty(response.getErrorMessage())) {
onFailed.run(new Exception(response.getErrorMessage()));
} else {
T dataObj = response.getDto() != null ?
response.getDto() :
response.getEntity();
if (dataObj !=null ) analyzedList.add(dataObj);
}
} else {
Log.e(logTitle, response.getErrorMessage());
onFailed.run(CommonRESTException.tryRecognizeException(response.getErrorMessage()));
return;
}
}
onComplete.run(analyzedList);
} else {
Log.e(logTitle, responseList.message());
onFailed.run(new Exception(responseList.message()));
}
} else {
Log.e(logTitle, "Status " + responseList.code() + ": " + responseList.message());
onFailed.run(new Exception("Status " + responseList.code() + ": " + responseList.message()));
}
}
} }

View File

@ -2,11 +2,17 @@ package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit;
import android.app.Dialog; import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@ -18,20 +24,25 @@ import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Griglia; import it.integry.integrywmsnative.core.data_store.db.entity.Griglia;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.expansion.BaseActivity; import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding; import it.integry.integrywmsnative.databinding.ActivityPvordineAcquistoEditBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter.OrdineAcquistoArtListAdapter;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
public class PVOrdineAcquistoEditActivity extends BaseActivity { public class PVOrdineAcquistoEditActivity extends BaseActivity {
private Ordine mOrdine; private Ordine mOrdine;
private Griglia mGriglia; private Griglia mGriglia;
private List<ArticoloOrdine> mArticoli; private List<ArticoloOrdine> mArticoli = new ArrayList<>();
private PVEditOrderHelper mhelper; private PVEditOrderHelper mhelper;
private ActivityPvordineAcquistoEditBinding mBinding; private ActivityPvordineAcquistoEditBinding mBinding;
private int mBarcodeScannerIstanceID; private int mBarcodeScannerIstanceID;
private OrdineAcquistoArtListAdapter mAdapter;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -41,7 +52,13 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pvordine_acquisto_edit);
mBinding.setViewModel(this); mBinding.setViewModel(this);
mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine")); mOrdine = DataCache.retrieveItem(getIntent().getStringExtra("keyOrdine"));
setTitle("aaaa"); if (mOrdine.isTransmitted()){
Toast.makeText(this, "Impossibile modificare ordine esportato", Toast.LENGTH_SHORT).show();
closeEdit();
}
String testataOrdString = String.format(this.getString(R.string.ord_acq_testata), String.valueOf(mOrdine.getOrdineId()), UtilityDate.formatDate(mOrdine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
mBinding.orderIdentifier.setText(Html.fromHtml(testataOrdString));
initRecyclerView();
fetchDetails(); fetchDetails();
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(this::onScanSuccessful) .setOnScanSuccessfull(this::onScanSuccessful)
@ -49,6 +66,18 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
} }
private void initRecyclerView() {
mBinding.articoliOrdineList.setHasFixedSize(true);
mBinding.articoliOrdineList.setLayoutManager(new LinearLayoutManager(this));
DividerItemDecoration itemDecorator = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider));
mBinding.articoliOrdineList.addItemDecoration(itemDecorator);
mAdapter = new OrdineAcquistoArtListAdapter(this, mArticoli, this::addArticolo);
mBinding.articoliOrdineList.setAdapter(mAdapter);
}
private void handleException(Exception ex) { private void handleException(Exception ex) {
runOnUiThread(()->{ runOnUiThread(()->{
BarcodeManager.enable(); BarcodeManager.enable();
@ -80,7 +109,7 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
if (articolo == null) { if (articolo == null) {
Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Inserimento articolo annullato", Toast.LENGTH_SHORT).show();
} else { } else {
Toast.makeText(this, "Articolo inserito", Toast.LENGTH_SHORT).show(); fetchArticoli();
} }
}).show(); }).show();
}); });
@ -106,23 +135,29 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
progress.dismiss(); progress.dismiss();
mArticoli = articoli; mArticoli = articoli;
runOnUiThread(()->{ runOnUiThread(()->{
mAdapter.updateItems(mArticoli);
mBinding.countArtOrd.setText(String.valueOf(mArticoli.size())); mBinding.countArtOrd.setText(String.valueOf(mArticoli.size()));
mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE); mBinding.pvOrdineExport.setVisibility(mArticoli.size() > 0 ? View.VISIBLE : View.GONE);
}); });
}, this::handleException); }, this::handleException);
} }
public void addArticoloToOrdine(ArticoloOrdine articolo) {
}
public void closeEdit() { public void closeEdit() {
onBackPressed(); onBackPressed();
} }
public void exportOrdine() { public void exportOrdine() {
onBackPressed(); final Dialog progress = UtilityProgress.createDefaultProgressDialog(this);
PVOrdiniAcquistoRESTConsumer.saveOrdine(mOrdine , mArticoli,mGriglia,(ordine)->{
progress.dismiss();
runOnUiThread(()-> {
Toast.makeText(this, "Ordine salvato con successo", Toast.LENGTH_SHORT).show();
onBackPressed();
});
},e-> runOnUiThread(()-> {
progress.dismiss();
UtilityExceptions.defaultException(this,e);
}));
} }
@Override @Override
@ -131,4 +166,14 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity {
super.onBackPressed(); super.onBackPressed();
} }
private void showDataSavedDialog() {
DialogSimpleMessageHelper.makeSuccessDialog(
this,
getString(R.string.completed),
new SpannableString(getString(R.string.data_saved)),
null, null).show();
}
} }

View File

@ -0,0 +1,125 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.adapter;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.wrappers.OrdineWrapper;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentPvArticoliOrdineAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
public class OrdineAcquistoArtListAdapter extends SectionedRecyclerViewAdapter<OrdineAcquistoArtListAdapter.SubheaderHolder, OrdineAcquistoArtListAdapter.SingleItemViewHolder> implements SectionTitleProvider {
private Context mContext;
private List<ArticoloOrdine> mDataset;
RunnableArgs<ArticoloOrdine> mOnItemSelect;
static class SubheaderHolder extends RecyclerView.ViewHolder {
FragmentPvOrdiniAcquistoListHeaderBinding binding;
SubheaderHolder(FragmentPvOrdiniAcquistoListHeaderBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
static class SingleItemViewHolder extends RecyclerView.ViewHolder {
FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding;
SingleItemViewHolder(FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public OrdineAcquistoArtListAdapter(Context context, List<ArticoloOrdine> myDataset, RunnableArgs<ArticoloOrdine> onItemSelect) {
mContext = context;
mDataset = orderItems(myDataset);
mOnItemSelect = onItemSelect;
}
public void updateItems(List<ArticoloOrdine> updatedDataset) {
mDataset.clear();
mDataset.addAll(orderItems(updatedDataset));
notifyDataSetChanged();
notifyDataChanged();
}
private List<ArticoloOrdine> orderItems(List<ArticoloOrdine> dataset) {
return Stream.of(dataset)
.distinctBy(ArticoloOrdine::getArticoloOrdineId)
.sortBy(x -> UtilityDate.formatDate(x.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList();
}
@Override
public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) {
FragmentPvOrdiniAcquistoListHeaderBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_ordini_acquisto__list_header, parent, false);
return new SubheaderHolder(binding);
}
@Override
public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) {
FragmentPvArticoliOrdineAcquistoListSingleItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.fragment_pv_articoli_ordine_acquisto__list_single_item, parent, false);
return new SingleItemViewHolder(binding);
}
@Override
public void onBindSubheaderViewHolder(OrdineAcquistoArtListAdapter.SubheaderHolder subheaderHolder, int nextItemPosition) {
subheaderHolder.binding.title.setText(mContext.getString(R.string.ordini_a_aperti));
}
@Override
public void onBindItemViewHolder(OrdineAcquistoArtListAdapter.SingleItemViewHolder h, int itemPosition) {
final ArticoloOrdine articoloOrdine = mDataset.get(itemPosition);
final OrdineAcquistoArtListAdapter.SingleItemViewHolder holder = h;
holder.binding.setArticolo(articoloOrdine);
holder.binding.getRoot().setOnClickListener(v -> mOnItemSelect.run(articoloOrdine));
}
@Override
public boolean onPlaceSubheaderBetweenItems(int position) {
return false;
}
@Override
public int getItemSize() {
return mDataset.size();
}
@Override
public String getSectionTitle(int position) {
return null;
}
}

View File

@ -12,10 +12,11 @@ import android.view.LayoutInflater;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine; import it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine;
import it.integry.integrywmsnative.core.expansion.BaseDialog; import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding; import it.integry.integrywmsnative.databinding.DialogPvEditArticoloBinding;
import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper; import it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper.PVEditOrderHelper;
@ -40,13 +41,19 @@ public class EditArticoloDialog {
mContext = context; mContext = context;
mArticolo = articolo; mArticolo = articolo;
mHelper = new PVEditOrderHelper(context); mHelper = new PVEditOrderHelper(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_pv_edit_articolo, null, false);
mBinding.setViewmodel(this); mBinding.setViewmodel(this);
mDialog = new BaseDialog(context); mDialog = new BaseDialog(context);
mDialog.setContentView(mBinding.getRoot()); mDialog.setContentView(mBinding.getRoot());
UtilityDialog.setTo90PercentSize(mContext, mDialog);
mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mBinding.qtaTot.setText(String.valueOf(mArticolo.getQtaOrd()));
mSavedArt = null; mSavedArt = null;
mDialog.setOnDismissListener(dialog -> { mDialog.setOnDismissListener(dialog -> {
onDialogDismiss.run(mSavedArt); onDialogDismiss.run(mSavedArt);
}); });
@ -62,14 +69,7 @@ public class EditArticoloDialog {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
if (mLockedInput){ setQtaOrd(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
mLockedInput = false;
}else{
mLockedInput = true;
float qtaTot = Float.parseFloat(s.toString());
float qtaCnf = qtaTot * mArticolo.getQtaCnf();
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
}
} }
@Override @Override
@ -84,15 +84,7 @@ public class EditArticoloDialog {
@Override @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
if (mLockedInput){ setQtaCnf(s.toString().length() >0 ? Float.parseFloat(s.toString()) : 0);
mLockedInput = false;
}else{
mLockedInput = true;
float qtaCnf = Float.parseFloat(s.toString());
float qtaTot = qtaCnf / mArticolo.getQtaCnf();
mBinding.qtaTot.setText(String.valueOf(qtaTot));
}
} }
@Override @Override
@ -101,6 +93,26 @@ public class EditArticoloDialog {
} }
}); });
} }
public void setQtaCnf(float qtaCnf){
if (mLockedInput){
mLockedInput = false;
}else{
mLockedInput = true;
float qtaTot = qtaCnf * mArticolo.getQtaCnf();
mBinding.qtaTot.setText(String.valueOf(qtaTot));
}
}
public void setQtaOrd(float qtaOrd){
mArticolo.setQtaOrd(qtaOrd);
if (mLockedInput){
mLockedInput = false;
}else{
mLockedInput = true;
float qtaCnf = qtaOrd / mArticolo.getQtaCnf();
mBinding.qtaCnf.setText(String.valueOf(qtaCnf));
}
}
public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) { public static Dialog make(Activity context, ArticoloOrdine articolo, RunnableArgs<ArticoloOrdine> onDialogDismiss) {
return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog; return new EditArticoloDialog(context, articolo, onDialogDismiss).mDialog;
@ -108,11 +120,21 @@ public class EditArticoloDialog {
public void saveAndExit(){ public void saveAndExit(){
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext); final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
try{
float qtaOrd = Float.parseFloat(mBinding.qtaTot.getText().toString());
if (qtaOrd <= 0){
throw new Exception("La quantità ordinata deve essere maggiore di 0");
}
mArticolo.setQtaOrd(qtaOrd);
}catch (Exception e){
mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e));
}
mHelper.saveArticoloToOrdine(mArticolo, ()->{ mHelper.saveArticoloToOrdine(mArticolo, ()->{
mSavedArt = mArticolo; mSavedArt = mArticolo;
progress.dismiss(); progress.dismiss();
mDialog.dismiss(); mDialog.dismiss();
}); },e-> mContext.runOnUiThread(()-> UtilityExceptions.defaultException(mContext,e)));
} }
public ArticoloOrdine getArticolo() { public ArticoloOrdine getArticolo() {

View File

@ -0,0 +1,134 @@
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;
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));
}
}

View File

@ -0,0 +1,46 @@
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

@ -0,0 +1,24 @@
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

@ -1,9 +1,6 @@
package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper; package it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.helper;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.List; import java.util.List;
@ -14,12 +11,13 @@ import it.integry.integrywmsnative.core.data_store.db.repository.ArticoliGriglia
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.GrigliaRepository; import it.integry.integrywmsnative.core.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.rest.consumers.PVOrdiniAcquistoRESTConsumer;
public class PVEditOrderHelper { public class PVEditOrderHelper {
private Context mContext; private Context mContext;
private GrigliaRepository mGrigliaRepository; private GrigliaRepository mGrigliaRepository;
private ArticoliOrdineRepository mArticoliOrdineRepository; private ArticoliOrdineRepository mArticoliOrdineRepository;
private ArticoliGrigliaRepository mArticoliGrigliaRepository ; private ArticoliGrigliaRepository mArticoliGrigliaRepository;
public PVEditOrderHelper(Context mContext) { public PVEditOrderHelper(Context mContext) {
this.mContext = mContext; this.mContext = mContext;
@ -28,55 +26,45 @@ public class PVEditOrderHelper {
mArticoliGrigliaRepository = new ArticoliGrigliaRepository(); mArticoliGrigliaRepository = new ArticoliGrigliaRepository();
} }
public void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail){ public void checkArticolo(Ordine ordine, String barcode, RunnableArgs<ArticoloOrdine> onSuccess, RunnableArgs<Exception> onFail) {
try{ try {
mArticoliOrdineRepository.findArticoloByScanAndGriglia(ordine,barcode,(articolo)->{ mArticoliOrdineRepository.findArticoloByScanAndOrdine(ordine, barcode, (articolo) -> {
if (articolo != null) { if (articolo != null) {
onSuccess.run(articolo); onSuccess.run(articolo);
}else{ } else {
mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(),artGrid->{ mArticoliGrigliaRepository.findArticoloByScanAndGriglia(barcode, ordine.getIdGriglia(), artGrid -> {
if (artGrid != null){ if (artGrid != null) {
onSuccess.run(artGrid.convertToArticoloOrdine(ordine)); onSuccess.run(artGrid.convertToArticoloOrdine(ordine));
}else{ } else {
if (barcode.length() < 13){ onFail.run(new Exception("L' articolo ( " + barcode + " ) non è presente nella griglia"));
String newbarcode = StringUtils.leftPad(barcode,13,'0');
mArticoliGrigliaRepository.findArticoloByScanAndGriglia(newbarcode, ordine.getIdGriglia(),aartGrid->{
if (aartGrid != null){
onSuccess.run(aartGrid.convertToArticoloOrdine(ordine));
}else{
onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia"));
}
},onFail);
}else{
onFail.run(new Exception("L' articolo ( "+barcode+" ) non è presente nella griglia"));
}
} }
},onFail); }, onFail);
} }
},onFail); }, onFail);
}catch (Exception e){ } catch (Exception e) {
onFail.run(e); onFail.run(e);
} }
} }
public void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onError) { public void loadGriglia(int idGriglia, RunnableArgs<Griglia> onLoad, RunnableArgs<Exception> onError) {
try{ try {
mGrigliaRepository.findGrigliaById(idGriglia,onLoad,onError); mGrigliaRepository.findGrigliaById(idGriglia, onLoad, onError);
}catch (Exception e){ } catch (Exception e) {
onError.run(e); onError.run(e);
} }
} }
public void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError){
try{ public void loadArticoli(Ordine ordine, RunnableArgs<List<ArticoloOrdine>> onLoad, RunnableArgs<Exception> onError) {
mArticoliOrdineRepository.findArticoliByOrdine(ordine,onLoad,onError); try {
}catch (Exception e){ mArticoliOrdineRepository.findArticoliByOrdine(ordine, onLoad, onError);
} catch (Exception e) {
onError.run(e); onError.run(e);
} }
} }
public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSsve) { public void saveArticoloToOrdine(ArticoloOrdine articolo, Runnable onSave, RunnableArgs<Exception> onFail) {
onSsve.run(); mArticoliOrdineRepository.saveArticoloToOrdine(articolo, onSave, onFail);
} }
} }

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv; package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
@ -30,17 +30,13 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
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.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoBinding;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvOpenListAdapter; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvOpenListAdapter;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.dialogs.DialogScanLisA; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs.DialogScanLisA;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
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.vendita.dto.OrdineVenditaInevasoDTO;
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.vendita_ordine_inevaso.VenditaOrdineInevasoActivity;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
@ -99,6 +95,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
mBinding.fabNewOrder.setVisibility(View.VISIBLE); mBinding.fabNewOrder.setVisibility(View.VISIBLE);
mBinding.codAlis.setText(griglia.getCodAlis()); mBinding.codAlis.setText(griglia.getCodAlis());
mBinding.descrLis.setText(griglia.getDescrLisa()); mBinding.descrLis.setText(griglia.getDescrLisa());
mBinding.descrDepo.setText(griglia.getDescrDepo());
mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli())); mBinding.countArtLis.setText(String.valueOf(griglia.getCountArticoli()));
fetchOrders(); fetchOrders();
@ -160,7 +157,7 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress)); final Dialog progress = UtilityProgress.createDefaultProgressDialog(getActivity(), getString(R.string.ordini_a_aperti_progress));
mHelper.createNewOrder(mGriglia, order -> { mHelper.createNewOrder(mGriglia, order -> {
progress.dismiss(); progress.dismiss();
getActivity().runOnUiThread(this::fetchOrders); getActivity().runOnUiThread(()-> selectOrdine.run(order));
}, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress))); }, e -> getActivity().runOnUiThread(() -> UtilityExceptions.defaultException(getActivity(), e, progress)));
} }
@ -174,4 +171,12 @@ public class PVOrdiniAcquistoGrigliaFragment extends Fragment implements ITitled
public void setOnPreDestroy(Runnable onPreDestroy) { public void setOnPreDestroy(Runnable onPreDestroy) {
} }
@Override
public void onResume() {
super.onResume();
if (mGriglia != null){
fetchOrders();
}
}
} }

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv; package it.integry.integrywmsnative.gest.pv_ordini_acquisto;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
@ -23,7 +23,7 @@ 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.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniATrasmessiElencoBinding;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.core.OrdineAcquistoPvTransmittedListAdapter; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.core.OrdineAcquistoPvTransmittedListAdapter;
import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato; import it.integry.integrywmsnative.gest.prod_accettazione_ord_produzione.dialog.DialogOrdineProduzioneFiltroAvanzato;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
import android.content.Context; import android.content.Context;
import android.text.Html; import android.text.Html;
@ -15,12 +15,9 @@ import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.data_store.db.entity.Ordine; import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.view_model.OrdineWithGriglia;
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;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.databinding.FragmentOrdineAPvTransmittedListModelBinding;
import it.integry.integrywmsnative.databinding.FragmentOrdiniAPvListSingleItemBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListHeaderBinding;
import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding; import it.integry.integrywmsnative.databinding.FragmentPvOrdiniAcquistoListSingleItemBinding;
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
@ -73,7 +70,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) { private List<OrdineWrapper> orderItems(List<OrdineWrapper> dataset) {
return Stream.of(dataset) return Stream.of(dataset)
.distinctBy(OrdineWrapper::getOrdine) .distinctBy(OrdineWrapper::getOrdine)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList(); .toList();
} }
@ -104,7 +101,7 @@ public class OrdineAcquistoPvOpenListAdapter extends SectionedRecyclerViewAdapte
final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h; final OrdineAcquistoPvOpenListAdapter.SingleItemViewHolder holder = h;
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdineId()), UtilityDate.formatDate(ordine.getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli()))); holder.binding.numArts.setText(String.format(mContext.getString(R.string.ord_acq_num_articoli), String.valueOf(ordineWrapper.getCountArticoli())));

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv.core; package it.integry.integrywmsnative.gest.pv_ordini_acquisto.core;
import android.content.Context; import android.content.Context;
import android.text.Html; import android.text.Html;
@ -68,7 +68,7 @@ public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerVie
private List<OrdineWithGriglia> orderItems(List<OrdineWithGriglia> dataset) { private List<OrdineWithGriglia> orderItems(List<OrdineWithGriglia> dataset) {
return Stream.of(dataset) return Stream.of(dataset)
.distinctBy(OrdineWithGriglia::getGriglia) .distinctBy(OrdineWithGriglia::getGriglia)
.sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH)) .sortBy(x -> UtilityDate.formatDate(x.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH))
.toList(); .toList();
} }
@ -100,7 +100,7 @@ public class OrdineAcquistoPvTransmittedListAdapter extends SectionedRecyclerVie
final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h; final OrdineAcquistoPvTransmittedListAdapter.SingleItemViewHolder holder = h;
String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataOrd(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); String testataOrdString = String.format(mContext.getString(R.string.ord_acq_testata), String.valueOf(ordine.getOrdine().getOrdineId()), UtilityDate.formatDate(ordine.getOrdine().getDataIns(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO"); holder.binding.badge1.setText(ordine.getOrdine().isTransmitted() ? "TRASMESSO" : "NON TRASMESSO");

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv.dialogs; package it.integry.integrywmsnative.gest.pv_ordini_acquisto.dialogs;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
@ -7,7 +7,6 @@ import android.graphics.Color;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
@ -16,13 +15,12 @@ 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.data_store.db.entity.Griglia; 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.data_store.db.repository.GrigliaRepository;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.BaseDialog; import it.integry.integrywmsnative.core.expansion.BaseDialog;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding; import it.integry.integrywmsnative.databinding.DialogScanCodiceGrigliaBinding;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper.OrdineAcquistoPvHelper; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper.OrdineAcquistoPvHelper;
public class DialogScanLisA { public class DialogScanLisA {

View File

@ -1,4 +1,4 @@
package it.integry.integrywmsnative.gest.ordini_acquisto_pv.helper; package it.integry.integrywmsnative.gest.pv_ordini_acquisto.helper;
import android.content.Context; import android.content.Context;
@ -65,7 +65,7 @@ public class OrdineAcquistoPvHelper {
public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) { public void createNewOrder(Griglia griglia, RunnableArgs<Ordine> onSuccess, RunnableArgs<Exception> onError) {
Ordine ordine = new Ordine(); Ordine ordine = new Ordine();
ordine.setDataOrd(new Date()); ordine.setDataIns(new Date());
ordine.setIdGriglia(griglia.getGrigliaId()); ordine.setIdGriglia(griglia.getGrigliaId());
mOrdineRepository.insert(ordine,id->{ mOrdineRepository.insert(ordine,id->{
ordine.setOrdineId(id); ordine.setOrdineId(id);

View File

@ -30,7 +30,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:paddingTop="8dp" android:paddingTop="8dp"
android:focusableInTouchMode="true" android:background="@color/full_white"
tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity"> tools:context=".gest.contenuto_bancale.ContenutoBancaleActivity">
@ -181,7 +181,7 @@
app:fab_colorPressed="@color/white_pressed" app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF" app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.exportOrdine()}" app:onClick="@{() -> viewModel.exportOrdine()}"
fab:fab_label="@string/action_recover_ul" fab:fab_label="@string/close_and_export"
/> />
<com.github.clans.fab.FloatingActionButton <com.github.clans.fab.FloatingActionButton
android:id="@+id/pv_ordine_close" android:id="@+id/pv_ordine_close"
@ -192,8 +192,8 @@
app:fab_colorNormal="@color/white" app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed" app:fab_colorPressed="@color/white_pressed"
app:fab_colorRipple="#66FFFFFF" app:fab_colorRipple="#66FFFFFF"
app:onClick="@{() -> viewModel.exportOrdine()}" app:onClick="@{() -> viewModel.closeEdit()}"
fab:fab_label="@string/action_recover_ul" fab:fab_label="@string/close_and_exit"
android:scaleX="-1" /> android:scaleX="-1" />

View File

@ -2,9 +2,11 @@
<layout xmlns:app="http://schemas.android.com/apk/res-auto" <layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" /> <import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" /> type="it.integry.integrywmsnative.gest.pv_ordine_acquisto_edit.dialog.EditArticoloDialog" />
@ -12,40 +14,34 @@
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/base_root" android:id="@+id/base_root"
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"
android:orientation="vertical"
app:cardCornerRadius="12dp" app:cardCornerRadius="12dp"
app:cardElevation="0dp"> app:cardElevation="0dp">
<LinearLayout <LinearLayout
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 <RelativeLayout
android:id="@+id/title_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/light_blue_300" android:background="@color/light_blue_300"
android:gravity="center_horizontal"> android:gravity="center_horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_error_white_24dp"
android:layout_margin="24dp"/>
</RelativeLayout> </RelativeLayout>
<LinearLayout <LinearLayout
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"
android:paddingTop="24dp"
android:paddingLeft="24dp" android:paddingLeft="24dp"
android:paddingTop="24dp"
android:paddingRight="24dp"> android:paddingRight="24dp">
<RelativeLayout <RelativeLayout
@ -57,24 +53,25 @@
android:id="@+id/cod_mart" android:id="@+id/cod_mart"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:ellipsize="end" android:ellipsize="end"
android:text="@{viewmodel.articolo.codMart}"
android:textColor="@color/colorPrimary" android:textColor="@color/colorPrimary"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
android:text="@{viewmodel.articolo.codMart}" tools:text="codMart" />
tools:text="codMart"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_below="@id/cod_mart"
android:id="@+id/descr_art" android:id="@+id/descr_art"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/cod_mart"
android:ellipsize="end" android:ellipsize="end"
android:text="@{viewmodel.articolo.descrizione}"
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="16sp" android:textSize="16sp"
android:text="@{viewmodel.articolo.descrizione}"
android:textStyle="bold" android:textStyle="bold"
tools:text="DESCR ART"/> tools:text="DESCR ART" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
@ -86,11 +83,12 @@
android:textColor="#000" android:textColor="#000"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="(UM)" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintRight_toRightOf="parent" /> tools:text="(UM)" />
</RelativeLayout> </RelativeLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -106,13 +104,14 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="4dp"
android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.mediaSett)}' android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.mediaSett)}'
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:paddingStart="4dp"
tools:text="1150" /> tools:text="1150" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -128,103 +127,121 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="4dp"
android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.qtaCnf)}' android:text='@{UtilityNumber.decimalToString(viewmodel.articolo.qtaCnf)}'
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" android:textStyle="bold"
android:paddingStart="4dp"
tools:text="5" /> tools:text="5" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
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_marginTop="16dp"> android:layout_marginTop="16dp"
android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="horizontal" android:orientation="horizontal"
android:weightSum="2"> android:weightSum="2">
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/qta_cnf_label" android:id="@+id/qta_cnf_label"
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_marginEnd="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/guide_left"
app:layout_constraintEnd_toStartOf="@id/guide_right"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary"> android:layout_weight="1"
app:layout_constraintEnd_toStartOf="@id/guide_right"
app:layout_constraintStart_toStartOf="@id/guide_left"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/qta_cnf" android:id="@+id/qta_cnf"
style="@style/TextInputEditText.OutlinePrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/packages" android:hint="@string/packages"
android:inputType="numberDecimal" android:inputType="numberDecimal"
style="@style/TextInputEditText.OutlinePrimary"/> android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/qta_tot_label" android:id="@+id/qta_tot_label"
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_marginStart="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/guide_left"
app:layout_constraintEnd_toStartOf="@id/guide_right"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary"> android:layout_weight="1"
app:layout_constraintEnd_toStartOf="@id/guide_right"
app:layout_constraintStart_toStartOf="@id/guide_left"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/qta_tot" android:id="@+id/qta_tot"
style="@style/TextInputEditText.OutlinePrimary"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/quantity" android:hint="@string/quantity"
android:inputType="numberDecimal" android:inputType="numberDecimal"
style="@style/TextInputEditText.OutlinePrimary"/> android:selectAllOnFocus="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
</LinearLayout> </LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_marginTop="8dp">
android:paddingTop="12dp"
android:paddingBottom="8dp" <androidx.constraintlayout.widget.Guideline
android:gravity="bottom|center_horizontal"> android:id="@+id/center_guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5"/>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_abort" android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline" style="@style/Button.PrimaryOutline"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/center_guideline"
android:onClick="@{()->viewmodel.cancel()}"
app:icon="@drawable/ic_clear_24dp" app:icon="@drawable/ic_clear_24dp"
app:strokeColor="@color/colorPrimary" app:strokeColor="@color/colorPrimary"
android:onClick="@{()->viewmodel.cancel()}" android:text="@string/no"/>
android:layout_marginEnd="8dp"
android:text="@string/abort"
/>
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm" android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Button.PrimaryFull" style="@style/Button.PrimaryFull"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/center_guideline"
app:layout_constraintEnd_toEndOf="parent"
app:icon="@drawable/ic_add_24dp" app:icon="@drawable/ic_add_24dp"
android:onClick="@{()->viewmodel.saveAndExit()}" android:onClick="@{()->viewmodel.saveAndExit()}"
android:text="@string/add"/> android:text="@string/yes"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="articolo"
type="it.integry.integrywmsnative.core.data_store.db.entity.ArticoloOrdine" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@+id/qta_box"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{articolo.codMart}"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:textStyle="bold"
tools:text="COD MART" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@{articolo.descrizione}"
android:textColor="@android:color/black"
android:textSize="16sp"
tools:text="Descrizione lunga articolo" />
<!--<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{`Lotto: ` + mtbColr.getPartitaMag()}"
android:textSize="14sp"
android:visibility="@{UtilityString.isNullOrEmpty(mtbColr.getPartitaMag()) ? View.INVISIBLE : View.VISIBLE}"
tools:text="Lotto: ABCDE" />-->
</LinearLayout>
<RelativeLayout
android:id="@+id/qta_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/badge1_round_corner"
android:gravity="center"
android:paddingLeft="6dp"
android:paddingTop="2dp"
android:paddingRight="6dp"
android:paddingBottom="2dp"
android:text="@{UtilityNumber.decimalToString(articolo.qtaOrd) + `\n` + articolo.untMis}"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="280.45\nCONF" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@ -4,7 +4,7 @@
<data> <data>
<import type="androidx.databinding.ObservableList"/> <import type="androidx.databinding.ObservableList"/>
<variable name="view" type="it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoTransmittedListFragment" /> <variable name="view" type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoTransmittedListFragment" />
</data> </data>
<FrameLayout <FrameLayout
@ -13,7 +13,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/full_white" android:background="@color/full_white"
tools:context="it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoTransmittedListFragment"> tools:context="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoTransmittedListFragment">
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -11,7 +11,7 @@
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoGrigliaFragment" /> type="it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment" />
</data> </data>
@ -86,6 +86,28 @@
android:textSize="14sp" android:textSize="14sp"
android:textStyle="italic" /> android:textStyle="italic" />
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/descrizione_deposito"
android:textColor="@android:color/black"
android:layout_marginEnd="8dp"
android:textSize="14sp" />
<TextView
android:id="@+id/descr_depo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="LISTINO FORMAT CEDI SECCO"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -273,8 +273,11 @@
<string name="ordini_a_aperti_progress">Controllo ordini aperti</string> <string name="ordini_a_aperti_progress">Controllo ordini aperti</string>
<string name="ord_acq_num_articoli"><![CDATA[#<b>%s</b> articoli]]></string> <string name="ord_acq_num_articoli"><![CDATA[#<b>%s</b> articoli]]></string>
<string name="descrizione_griglia">Descrizione griglia: </string> <string name="descrizione_griglia">Descrizione griglia: </string>
<string name="descrizione_deposito">Descrizione deposito: </string>
<string name="articoli_in_griglia">Articoli in griglia: </string> <string name="articoli_in_griglia">Articoli in griglia: </string>
<string name="cod_alis_name">Griglia: </string> <string name="cod_alis_name">Griglia: </string>
<string name="seleziona_crea_ordine_a_pv">Seleziona / Crea ordine</string> <string name="seleziona_crea_ordine_a_pv">Seleziona / Crea ordine</string>
<string name="add">Agigungi</string> <string name="add">Agigungi</string>
<string name="close_and_export">Chiudi ed esporta ordine</string>
<string name="close_and_exit">Chiudi ordine</string>
</resources> </resources>

View File

@ -278,8 +278,11 @@
<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>
<string name="descrizione_griglia">Grid description:</string> <string name="descrizione_griglia">Grid description:</string>
<string name="descrizione_deposito">Storage description:</string>
<string name="articoli_in_griglia">Items in grid:</string> <string name="articoli_in_griglia">Items in grid:</string>
<string name="cod_alis_name">Grid: </string> <string name="cod_alis_name">Grid: </string>
<string name="seleziona_crea_ordine_a_pv">Select/Create order</string> <string name="seleziona_crea_ordine_a_pv">Select/Create order</string>
<string name="add">Add</string> <string name="add">Add</string>
<string name="close_and_export">Close and export</string>
<string name="close_and_exit">Close order</string>
</resources> </resources>

View File

@ -1,8 +1,7 @@
package it.integry.wms.dynamic_customization.extensions; package it.integry.wms.dynamic_customization.extensions;
import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration; import it.integry.integrywmsnative.core.class_router.configs.BaseMenuConfiguration;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoGrigliaFragment; import it.integry.integrywmsnative.gest.pv_ordini_acquisto.PVOrdiniAcquistoGrigliaFragment;
import it.integry.integrywmsnative.gest.ordini_acquisto_pv.PVOrdiniAcquistoTransmittedListFragment;
public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration { public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration {
@ -20,12 +19,12 @@ public class MenuConfigurationSAPORIVERIPV extends BaseMenuConfiguration {
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv) .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_purchase_orders_pv)
.setFragmentClass(PVOrdiniAcquistoGrigliaFragment.newInstance())) .setFragmentClass(PVOrdiniAcquistoGrigliaFragment.newInstance()))
.addItem(new MenuItem() // .addItem(new MenuItem()
.setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi) // .setID(it.integry.integrywmsnative.R.id.nav_pv_ordini_acquisto_trasmessi)
.setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders) // .setTitleText(it.integry.integrywmsnative.R.string.transmitted_orders)
.setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) // .setTitleIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
.setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list) // .setDrawerIcon(it.integry.integrywmsnative.R.drawable.ic_dashboard_trasmitted_orders_list)
.setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance())) // .setFragmentClass(PVOrdiniAcquistoTransmittedListFragment.newInstance()))
); );