Finish v1.23.0(255)

This commit is contained in:
Valerio Castellana 2022-02-03 12:05:11 +01:00
commit 983b70821a
26 changed files with 834 additions and 299 deletions

1
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1 @@
/saveactions_settings.xml

View File

@ -6,8 +6,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 254
def appVersionName = '1.22.0'
def appVersionCode = 255
def appVersionName = '1.23.0'
signingConfigs {
release {
@ -124,7 +124,8 @@ dependencies {
api "com.google.dagger:dagger:$dagger2_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger2_version"
api "com.google.dagger:dagger-android:$dagger2_version"
api "com.google.dagger:dagger-android-support:$dagger2_version" // if you use the support libraries
api "com.google.dagger:dagger-android-support:$dagger2_version"
// if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger2_version"
//FAB

View File

@ -19,12 +19,14 @@ import it.integry.integrywmsnative.core.rest.consumers.CommessaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.DepositoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.EntityRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.services.inventario.InventarioService;
import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer;
import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer;
@ -165,5 +167,16 @@ public class MainApplicationModule {
return new DocInterniRESTConsumer();
}
@Provides
@Singleton
GiacenzaRESTConsumer provideGiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
return new GiacenzaRESTConsumer(systemRESTConsumer, articoloRESTConsumer);
}
@Provides
@Singleton
InventarioService provideInventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) {
return new InventarioService(giacenzaRESTConsumer);
}
}

View File

@ -60,7 +60,7 @@ public class MtbColr extends EntityBase {
public MtbColr() {
type = "mtb_colr";
if(SettingsManager.i().isUserLoggedIn()) {
if (SettingsManager.i().isUserLoggedIn()) {
setUtente(SettingsManager.i().getUser().getFullname());
}
}
@ -82,7 +82,6 @@ public class MtbColr extends EntityBase {
}
public MtbColr setGestione(GestioneEnum gestione) {
this.gestione = gestione.getText();
return this;
@ -124,6 +123,11 @@ public class MtbColr extends EntityBase {
return this;
}
public MtbColr setDataCollo(Date dataCollo) {
setDataCollo(UtilityDate.formatDate(dataCollo, UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
return this;
}
public Integer getRiga() {
return riga;
@ -301,8 +305,6 @@ public class MtbColr extends EntityBase {
}
public String getDatetimeRowS() {
return datetimeRow;
}
@ -322,11 +324,6 @@ public class MtbColr extends EntityBase {
}
public String getCodJcom() {
return codJcom;
}
@ -364,11 +361,6 @@ public class MtbColr extends EntityBase {
}
public String getDataScadPartitaS() {
return dataScadPartita;
}
@ -398,7 +390,6 @@ public class MtbColr extends EntityBase {
}
public String getUntMis() {
return untMis;
}

View File

@ -0,0 +1,273 @@
package it.integry.integrywmsnative.core.model;
import java.math.BigDecimal;
import java.util.Date;
/**
* Created by ValerioC on 06/03/2018.
*/
public class MvwSitArtUdcDetInventario {
private String gestione;
private Date dataCollo;
private String serCollo;
private Integer numCollo;
private Integer segno;
private String codMdep;
private String posizione;
private Integer priorita;
private String codGruppo;
private String gruppo;
private String codSgruppo;
private String sottogruppo;
private String codMart;
private String diacod;
private String descrizioneEstesa;
private String partitaMag;
private String codJcom;
private String commessa;
private String untMis;
private BigDecimal qtaCol;
private BigDecimal numCnf;
private BigDecimal qtaCnf;
private BigDecimal pesoNettoKg;
private BigDecimal pesoLordoKg;
private String codJfas;
private MtbAart mtbAart;
public String getGestione() {
return gestione;
}
public MvwSitArtUdcDetInventario setGestione(String gestione) {
this.gestione = gestione;
return this;
}
public Date getDataCollo() {
return dataCollo;
}
public MvwSitArtUdcDetInventario setDataCollo(Date dataCollo) {
this.dataCollo = dataCollo;
return this;
}
public String getSerCollo() {
return serCollo;
}
public MvwSitArtUdcDetInventario setSerCollo(String serCollo) {
this.serCollo = serCollo;
return this;
}
public Integer getNumCollo() {
return numCollo;
}
public MvwSitArtUdcDetInventario setNumCollo(Integer numCollo) {
this.numCollo = numCollo;
return this;
}
public Integer getSegno() {
return segno;
}
public MvwSitArtUdcDetInventario setSegno(Integer segno) {
this.segno = segno;
return this;
}
public String getCodMdep() {
return codMdep;
}
public MvwSitArtUdcDetInventario setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getPosizione() {
return posizione;
}
public MvwSitArtUdcDetInventario setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public Integer getPriorita() {
return priorita;
}
public MvwSitArtUdcDetInventario setPriorita(Integer priorita) {
this.priorita = priorita;
return this;
}
public String getCodGruppo() {
return codGruppo;
}
public MvwSitArtUdcDetInventario setCodGruppo(String codGruppo) {
this.codGruppo = codGruppo;
return this;
}
public String getGruppo() {
return gruppo;
}
public MvwSitArtUdcDetInventario setGruppo(String gruppo) {
this.gruppo = gruppo;
return this;
}
public String getCodSgruppo() {
return codSgruppo;
}
public MvwSitArtUdcDetInventario setCodSgruppo(String codSgruppo) {
this.codSgruppo = codSgruppo;
return this;
}
public String getSottogruppo() {
return sottogruppo;
}
public MvwSitArtUdcDetInventario setSottogruppo(String sottogruppo) {
this.sottogruppo = sottogruppo;
return this;
}
public String getCodMart() {
return codMart;
}
public MvwSitArtUdcDetInventario setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getDiacod() {
return diacod;
}
public MvwSitArtUdcDetInventario setDiacod(String diacod) {
this.diacod = diacod;
return this;
}
public String getDescrizioneEstesa() {
return descrizioneEstesa;
}
public MvwSitArtUdcDetInventario setDescrizioneEstesa(String descrizioneEstesa) {
this.descrizioneEstesa = descrizioneEstesa;
return this;
}
public String getPartitaMag() {
return partitaMag;
}
public MvwSitArtUdcDetInventario setPartitaMag(String partitaMag) {
this.partitaMag = partitaMag;
return this;
}
public String getCodJcom() {
return codJcom;
}
public MvwSitArtUdcDetInventario setCodJcom(String codJcom) {
this.codJcom = codJcom;
return this;
}
public String getCommessa() {
return commessa;
}
public MvwSitArtUdcDetInventario setCommessa(String commessa) {
this.commessa = commessa;
return this;
}
public String getUntMis() {
return untMis;
}
public MvwSitArtUdcDetInventario setUntMis(String untMis) {
this.untMis = untMis;
return this;
}
public BigDecimal getQtaCol() {
return qtaCol;
}
public MvwSitArtUdcDetInventario setQtaCol(BigDecimal qtaCol) {
this.qtaCol = qtaCol;
return this;
}
public BigDecimal getNumCnf() {
return numCnf;
}
public MvwSitArtUdcDetInventario setNumCnf(BigDecimal numCnf) {
this.numCnf = numCnf;
return this;
}
public BigDecimal getQtaCnf() {
return qtaCnf;
}
public MvwSitArtUdcDetInventario setQtaCnf(BigDecimal qtaCnf) {
this.qtaCnf = qtaCnf;
return this;
}
public BigDecimal getPesoNettoKg() {
return pesoNettoKg;
}
public MvwSitArtUdcDetInventario setPesoNettoKg(BigDecimal pesoNettoKg) {
this.pesoNettoKg = pesoNettoKg;
return this;
}
public BigDecimal getPesoLordoKg() {
return pesoLordoKg;
}
public MvwSitArtUdcDetInventario setPesoLordoKg(BigDecimal pesoLordoKg) {
this.pesoLordoKg = pesoLordoKg;
return this;
}
public String getCodJfas() {
return codJfas;
}
public MvwSitArtUdcDetInventario setCodJfas(String codJfas) {
this.codJfas = codJfas;
return this;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public MvwSitArtUdcDetInventario setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
}

View File

@ -155,7 +155,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
mtbColrClone
.setNumCollo(null)
.setDataCollo(null)
.setDataCollo((String) null)
.setRiga(null)
.setGestione(GestioneEnum.LAVORAZIONE)
@ -209,7 +209,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
MtbColr mtbColrClone = new MtbColr();
mtbColrClone
.setNumCollo(null)
.setDataCollo(null)
.setDataCollo((String) null)
.setRiga(null)
.setGestione(GestioneEnum.LAVORAZIONE)
.setDataColloRif(sourceMtbColt.getDataColloD())
@ -239,7 +239,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
saveCollo(newMtbColt, onComplete, onFailed);
}
public void createColloFromEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, GestioneEnum gestione, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
createColloFromEtichettaAnonima(barcodeScanDTO.getStringValue(), gestione, onComplete, onFailed);
}
@ -399,7 +398,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}, onFailed);
}
private void cyclicGetMultipleByTestate(@NotNull Iterator<MtbColt> sourceMtbColts, boolean onlyResiduo, ArrayList<MtbColt> resultMtbColt, Runnable onComplete, RunnableArgs<Exception> onAbort) {
if (sourceMtbColts.hasNext()) {
getByTestata(sourceMtbColts.next(), onlyResiduo, false, mtbColt -> {
@ -449,7 +447,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public void changePosizione(MtbColt mtbColtToMove, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
String codMdep = posizione.getCodMdep();
@ -545,7 +542,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}, onFailed);
}
public static void retrieveBasketColli(RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getColliInBasket(SettingsManager.i().getUserSession().getDepo().getCodMdep()).enqueue(new Callback<ServiceRESTResponse<List<MtbColt>>>() {
@ -622,7 +618,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public void assegnaLottoSuColloScarico(MtbColt sourceMtbColt, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
@ -648,7 +643,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
});
}
public void versamentoAutomaticoUL(MtbColt sourceMtbColt, RunnableArgs<VersamentoAutomaticoULResponseDTO> onComplete, RunnableArgs<Exception> onFailed) {
MtbColt sourceMtbColtClone = (MtbColt) sourceMtbColt.clone();
@ -682,7 +676,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart()))
.findFirst();
if(mtbAartOpt.isPresent()){
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}

View File

@ -0,0 +1,69 @@
package it.integry.integrywmsnative.core.rest.consumers;
import com.annimon.stream.Optional;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.utility.UtilityQuery;
@Singleton
public class GiacenzaRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer mSystemRESTConsumer;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
public GiacenzaRESTConsumer(SystemRESTConsumer systemRESTConsumer, ArticoloRESTConsumer articoloRESTConsumer) {
this.mSystemRESTConsumer = systemRESTConsumer;
this.mArticoloRESTConsumer = articoloRESTConsumer;
}
public void getGiacenzeInPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onComplete, RunnableArgs<Exception> onFailed) {
HashMap<String, Object> params = new HashMap<>();
params.put("posizione", posizione.getPosizione());
String whereCond = UtilityQuery.concatFieldsInWhereCond(params);
String query = "SELECT * from mvw_sitart_udc_det_inventario" +
" WHERE " + whereCond;
Type typeOfObjectsList = new TypeToken<ArrayList<MvwSitArtUdcDetInventario>>() {
}.getType();
this.mSystemRESTConsumer.<ArrayList<MvwSitArtUdcDetInventario>>processSql(query, typeOfObjectsList, inventarioList -> {
List<String> codMarts = Stream.of(inventarioList)
.map(x -> x.getCodMart().trim())
.toList();
mArticoloRESTConsumer.getByCodMarts(codMarts, mtbAarts -> {
for (var row : inventarioList) {
MtbAart foundMtbAart = null;
Optional<MtbAart> mtbAartOpt = Stream.of(mtbAarts)
.filter(x -> x.getCodMart().equalsIgnoreCase(row.getCodMart()))
.findFirst();
if (mtbAartOpt.isPresent()) {
foundMtbAart = mtbAartOpt.get();
}
row.setMtbAart(foundMtbAart);
}
onComplete.run(inventarioList);
}, onFailed);
}, onFailed);
}
}

View File

@ -0,0 +1,4 @@
package it.integry.integrywmsnative.core.rest.consumers;
public interface GiacenzaRESTConsumerService {
}

View File

@ -4,6 +4,11 @@ import android.text.TextUtils;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.reflect.TypeToken;
import com.orhanobut.logger.Logger;
@ -12,20 +17,23 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.rest.RESTBuilder;
import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO;
import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.Azienda;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString;
@ -46,7 +54,24 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
@Override
public void onResponse(Call<ServiceRESTResponse<Object>> call, Response<ServiceRESTResponse<Object>> response) {
analyzeAnswer(response, "ProcessSql", o -> {
Gson gson = new Gson();
Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new JsonDeserializer() {
@Override
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
try {
return new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(json.getAsString());
} catch (Exception e) {
try {
return new SimpleDateFormat().parse(json.getAsString());
} catch (ParseException parseException) {
throw new JsonParseException(parseException);
}
}
}
})
.create();
String json = gson.toJson(o);
InputStream ims = new ByteArrayInputStream(json.getBytes());

View File

@ -0,0 +1,104 @@
package it.integry.integrywmsnative.core.services.inventario;
import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.MvwSitArtUdcDetInventario;
import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer;
@Singleton
public class InventarioService {
private final GiacenzaRESTConsumer mGiacenzaRESTConsumer;
public InventarioService(GiacenzaRESTConsumer giacenzaRESTConsumer) {
this.mGiacenzaRESTConsumer = giacenzaRESTConsumer;
}
public void getInventarioDaPosizione(MtbDepoPosizione posizione, RunnableArgs<List<MvwSitArtUdcDetInventario>> onSuccess, RunnableArgs<Exception> onError) {
mGiacenzaRESTConsumer.getGiacenzeInPosizione(posizione, onSuccess, onError);
}
public void getInventarioDaPosizionePerArticolo(MtbDepoPosizione posizione, MtbAart articolo, RunnableArgs<List<MvwSitArtUdcDetInventario>> onSuccess, RunnableArgs<Exception> onError) {
getInventarioDaPosizione(posizione, (inventario) -> {
List<MvwSitArtUdcDetInventario> inventarioArticolo = Stream.of(inventario).filter(
x -> articolo.getCodMart().equalsIgnoreCase(x.getCodMart())
).toList();
onSuccess.run(inventarioArticolo);
}, onError);
}
public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario) {
return mapInventarioToMtbColt(inventario, true);
}
public MtbColt mapInventarioToMtbColt(MvwSitArtUdcDetInventario inventario, boolean includeRows) {
MtbColt mtbColt = new MtbColt();
mtbColt.setGestione(inventario.getGestione());
mtbColt.setDataCollo(inventario.getDataCollo());
mtbColt.setSerCollo(inventario.getSerCollo());
mtbColt.setNumCollo(inventario.getNumCollo());
mtbColt.setSegno(inventario.getSegno());
mtbColt.setCodMdep(inventario.getCodMdep());
mtbColt.setPosizione(inventario.getPosizione());
mtbColt.setCodJcom(inventario.getCodJcom());
mtbColt.setPesoNettoKg(inventario.getPesoNettoKg());
mtbColt.setPesoKg(inventario.getPesoLordoKg());
mtbColt.setCodJfas(inventario.getCodJfas());
if (includeRows) {
ObservableArrayList<MtbColr> rows = new ObservableArrayList<>();
rows.add(mapInventarioToMtbColr(inventario));
mtbColt.setMtbColr(rows);
}
return mtbColt;
}
public MtbColr mapInventarioToMtbColr(MvwSitArtUdcDetInventario inventario) {
MtbColr mtbColr = new MtbColr();
mtbColr.setGestione(inventario.getGestione());
mtbColr.setDataCollo(inventario.getDataCollo());
mtbColr.setSerCollo(inventario.getSerCollo());
mtbColr.setNumCollo(inventario.getNumCollo());
mtbColr.setCodMart(inventario.getCodMart());
mtbColr.setDescrizione(inventario.getDescrizioneEstesa());
mtbColr.setPartitaMag(inventario.getPartitaMag());
mtbColr.setCodJcom(inventario.getCodJcom());
mtbColr.setUntMis(inventario.getUntMis());
mtbColr.setQtaCol(inventario.getQtaCol());
mtbColr.setNumCnf(inventario.getNumCnf());
mtbColr.setQtaCnf(inventario.getQtaCnf());
mtbColr.setPesoNettoKg(inventario.getPesoNettoKg());
mtbColr.setPesoLordoKg(inventario.getPesoLordoKg());
mtbColr.setMtbAart(inventario.getMtbAart());
return mtbColr;
}
public List<MtbColt> mapInventarioToMtbColtList(List<MvwSitArtUdcDetInventario> inventario) {
return new ArrayList<>(Stream.of(inventario).groupBy(x -> x.getNumCollo() + "-" + x.getDataCollo() + "-" + x.getSerCollo() + x.getGestione()).map(inv -> {
List<MvwSitArtUdcDetInventario> rows = inv.getValue();
MtbColt mtbColt = mapInventarioToMtbColt(rows.get(0), false);
ObservableArrayList<MtbColr> mtbColrs = new ObservableArrayList<>();
mtbColrs.addAll(Stream.of(rows).map(this::mapInventarioToMtbColr).toList());
mtbColt.setMtbColr(mtbColrs);
return mtbColt;
}).toList());
}
}

View File

@ -6,14 +6,11 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.contab_doc_interni.DocInterniViewModel;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GrigliaAcquistiDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.DocInterniSetupDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.GruppiArticoloDTO;
import it.integry.integrywmsnative.gest.contab_doc_interni.dto.TipiDocDTO;
@ -94,11 +91,11 @@ public class DialogSelectDocInfoViewModel {
}
public List<String> getAvailableCodDtips() {
return Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList();
return mDocInterniSetupDTO.getTipiDoc() != null ? Stream.of(mDocInterniSetupDTO.getTipiDoc()).map(TipiDocDTO::getLabel).toList() : new ArrayList<>();
}
public List<String> getAvailableCodMgrps() {
return Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList();
return mDocInterniSetupDTO.getGruppiArt() != null ? Stream.of(mDocInterniSetupDTO.getGruppiArt()).map(GruppiArticoloDTO::getLabel).toList() : new ArrayList<>();
}
public List<String> getAvailableFornitori() {

View File

@ -13,6 +13,10 @@ public class ColloDTO {
private String segno;
private String idDisp;
private String codDtip;
private String codAnag;
private String codVdes;
private Integer numDoc;
private Date dataDoc;
private List<ArtDTO> artRows = new ArrayList<>();
private RifOrd rifOrd;
@ -88,6 +92,42 @@ public class ColloDTO {
return rifOrd;
}
public String getCodAnag() {
return codAnag;
}
public ColloDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public Integer getNumDoc() {
return numDoc;
}
public ColloDTO setNumDoc(Integer numDoc) {
this.numDoc = numDoc;
return this;
}
public Date getDataDoc() {
return dataDoc;
}
public ColloDTO setDataDoc(Date dataDoc) {
this.dataDoc = dataDoc;
return this;
}
public String getCodVdes() {
return codVdes;
}
public ColloDTO setCodVdes(String codVdes) {
this.codVdes = codVdes;
return this;
}
public void setRifOrd(RifOrd rifOrd) {
this.rifOrd = rifOrd;
}

View File

@ -49,8 +49,8 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
public class DocInterniEditFormActivity extends BaseActivity implements DocInterniEditFormViewModel.Listener, BottomSheetMtbColrEditView.Listener {
private static String DATA_KEY_DOCUMENT = "document";
private static String DATA_KEY_PRODUCTS_LIST = "productsList";
private static final String DATA_KEY_DOCUMENT = "document";
private static final String DATA_KEY_PRODUCTS_LIST = "productsList";
@Inject
MtbColrRepository documentRowsRepository;
@ -101,22 +101,22 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
SqlMtbColt document = this.viewModel.getDocument();
this.codDtip.set(document.getCodDtipProvv());
this.note.set(document.getAnnotazioni());
if(document.getCodMgrp() != null){
if (document.getCodMgrp() != null) {
this.codMgrp.set(document.getCodMgrp());
}else{
} else {
binding.mtbGrupContainer.setVisibility(View.GONE);
}
if (document.getCodAnag() != null){
this.codAnag.set(document.getCodAnag() + (document.getCodVdes()!=null?" - "+document.getCodVdes():""));
}else{
if (document.getCodAnag() != null) {
this.codAnag.set(document.getCodAnag() + (document.getCodVdes() != null ? " - " + document.getCodVdes() : ""));
} else {
this.binding.supplierLayout.setVisibility(View.GONE);
}
this.documentHeader.set(String.format(this.getString(R.string.doc_interni_doc_header), document.getId(), document.getCodDtipProvv()));
if (document.getNumDoc() != null && document.getDataDoc() != null){
if (document.getNumDoc() != null && document.getDataDoc() != null) {
this.documentRifHeader.set(String.format(this.getString(R.string.doc_testata), document.getNumDoc().toString(), document.getDataDoc()));
}else{
} else {
this.binding.docRifLayout.setVisibility(View.GONE);
}
}
@ -138,6 +138,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
this.viewModel.setProductsList(productList);
}
private void initRecyclerView() {
this.viewModel.docRows.observe(this, this::refreshList);
DocumentRowsListAdapter listAdapter = new DocumentRowsListAdapter(this, documentRowsObservableList);
@ -156,14 +157,13 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
}
public void closeEdit() {
this.onBackPressed();
}
public void manualSearch() {
BarcodeManager.disable();
DialogSimpleInputHelper.makeInputDialog(this, "Inserisci il codice a barre/codice articolo da cercare", null, this.viewModel::onSearch, BarcodeManager::enable).show();
DialogSimpleInputHelper.makeInputDialog(this, "Ricerca articolo", null, "Cod articolo / Barcode", this.viewModel::onSearch, BarcodeManager::enable).show();
}
@ -184,7 +184,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
}
mBarcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(this.viewModel::onScanSuccessful)
.setOnScanSuccessfull(this.viewModel::processBarcode)
.setOnScanFailed(this::onError));
this.viewModel.fetchDocumentRows();
}
@ -217,7 +217,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
mtbAart.setQtaCnf(BigDecimal.valueOf(row.getQtaCnf()));
mtbAart.setDescrizione(row.getDescrizione());
mtbAart.setDescrizioneEstesa(row.getDescrizione());
mtbAart.setFlagTracciabilita(flagTracciabilita? "S" : "N");
mtbAart.setFlagTracciabilita(flagTracciabilita ? "S" : "N");
mtbAart.setUntMis(row.getUntMis());
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
@ -226,6 +226,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.setInitialQtaCnf(BigDecimal.valueOf(row.getQtaCnf()))
.setInitialQtaTot(BigDecimal.valueOf(row.getQtaCol()))
.setNote(row.getNote())
.setSaveOnImeDone(true)
.setPartitaMag(row.getPartitaMag())
.setDataScad(row.getDataScad())
.setCanOverflowOrderQuantity(false)
@ -236,7 +237,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.setSuggestPartitaMag(data -> {
Date dataScad = data.getDataScad();
String partitaMag = null;
if (dataScad != null){
if (dataScad != null) {
partitaMag = new SimpleDateFormat("yyyymmdd").format(dataScad);
}
return partitaMag;
@ -271,7 +272,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
@Override
public void onMtbColrEdit(MtbColr mtbColr) {
GrigliaAcquistiChildDTO articolo = viewModel.getArticoloByCodMart(mtbColr.getCodMart());
this.viewModel.editRow(entityToSql(mtbColr),articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
this.viewModel.editRow(entityToSql(mtbColr), articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
}
@Override

View File

@ -116,6 +116,7 @@ public void deleteDocument() {
return;
}
SqlMtbColr row = this.getRowForArticolo(articolo);
this.sendOnLoadingEnded();
this.editRow(row,articolo.getFlagTracciabilita().equalsIgnoreCase("S"));
}
@ -147,7 +148,7 @@ public void deleteDocument() {
}
private GrigliaAcquistiChildDTO searchArticolo(String filter) {
return Stream.of(this.productsList).filter(dto -> dto.getCodMart().equalsIgnoreCase(filter) || dto.getBarcode().equalsIgnoreCase(filter)).findFirstOrElse(null);
return Stream.of(this.productsList).filter(dto -> filter.equalsIgnoreCase(dto.getCodMart()) || filter.equalsIgnoreCase(dto.getBarcode())).findFirstOrElse(null);
}
private SaveDTO getSaveDto() {
@ -168,6 +169,10 @@ public void deleteDocument() {
collo.setCreatedDate(UtilityDate.formatDate(document.getDataCollo(), UtilityDate.COMMONS_DATE_FORMATS.DMY_TIME_SLASH));
collo.setAnnotazioni(document.getAnnotazioni());
collo.setSegno(saveDTO.getSegno());
collo.setDataDoc(document.getDataDoc());
collo.setNumDoc(document.getNumDoc());
collo.setCodAnag(document.getCodAnag());
collo.setCodVdes(document.getCodVdes());
for (SqlMtbColr row : this.getDocumentRows()) {
ArtDTO artDto = new ArtDTO();
@ -209,7 +214,7 @@ public void deleteDocument() {
this.productsList = productsList;
}
public void onScanSuccessful(BarcodeScanDTO dto) {
public void processBarcode(BarcodeScanDTO dto) {
String code = dto.getStringValue();
this.onSearch(code);
}

View File

@ -7,6 +7,7 @@ import dagger.Provides;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
@Module(subcomponents = {PickingLiberoComponent.class})
public class PickingLiberoModule {
@ -15,7 +16,9 @@ public class PickingLiberoModule {
@Singleton
PickingLiberoViewModel providesPickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer);
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer
) {
return new PickingLiberoViewModel(articoloRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, posizioniRESTConsumer);
}
}

View File

@ -15,6 +15,7 @@ import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUBaseOperationsListener;
@ -23,18 +24,21 @@ import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.VtbDest;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.rest.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO;
@ -48,6 +52,7 @@ public class PickingLiberoViewModel {
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final PosizioniRESTConsumer mPosizioniRESTConsumer;
private boolean mFlagAskCliente;
@ -60,10 +65,13 @@ public class PickingLiberoViewModel {
@Inject
public PickingLiberoViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer) {
BarcodeRESTConsumer barcodeRESTConsumer,
PosizioniRESTConsumer posizioniRESTConsumer
) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mPosizioniRESTConsumer = posizioniRESTConsumer;
}
@ -88,6 +96,9 @@ public class PickingLiberoViewModel {
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
this.executeEtichettaLU(barcodeScanDTO.getStringValue(), onComplete);
} else if (UtilityBarcode.isEtichettaPosizione(barcodeScanDTO)) {
//Cerco tramite etichetta un collo in posizione mono ul
this.executeEtichettaPosizione(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
//Cerco tramite etichetta ean 128 (che può indicarmi una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
@ -97,11 +108,41 @@ public class PickingLiberoViewModel {
this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
} else {
//Cerco tramite ean13 un collo in posizione mono ul definita in anagrafica articolo, altrimenti se abilitato procedo con picking manuale
this.loadArticolo(barcodeScanDTO.getStringValue(), null, onComplete);
}
}
private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single();
this.executePosizione(foundPosizione, null, onComplete);
}
private void executePosizione(MtbDepoPosizione posizione, MtbAart articolo, Runnable onComplete) {
this.mPosizioniRESTConsumer.getBancaliInPosizione(posizione, mtbColtList -> {
if (mtbColtList == null || mtbColtList.size() == 0) {
if (articolo != null) {
this.dispatchArt(articolo, null);
} else {
this.sendError(new NoLUFoundException());
}
} else if (mtbColtList.size() == 1) {
this.mColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
pickMerceULtoUL(mtbColt, onComplete);
}, this::sendError);
} else {
this.sendError(new TooManyLUFoundInMonoLUPositionException());
}
}, this::sendError);
}
private void executeEtichettaEanPeso(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
try {
Ean13PesoModel ean13PesoModel = Ean13PesoModel.fromBarcode(barcodeScanDTO.getStringValue());
@ -164,10 +205,15 @@ public class PickingLiberoViewModel {
}
mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) {
this.dispatchArt(mtbAartList.get(0), ean128Model);
MtbAart articolo = mtbAartList.get(0);
MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione());
if (posizione != null && posizione.isFlagMonoCollo()) {
this.executePosizione(posizione, articolo, onComplete);
} else {
this.dispatchArt(articolo, ean128Model);
onComplete.run();
}
} else {
this.sendError(new NoResultFromBarcodeException());
@ -369,7 +415,7 @@ public class PickingLiberoViewModel {
.setNumCollo(null)
.setDataColloRif(cloneMtbColr.getDataColloS())
.setDataCollo(null)
.setDataCollo((String) null)
.setPesoLordoKg(null)
.setPesoNettoKg(null);

View File

@ -2,6 +2,7 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze;
import android.app.Dialog;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.os.Bundle;
@ -95,15 +96,21 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
@Override
public void onCreate(Bundle savedInstanceState) {
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.onCreate(savedInstanceState);
}
@Override
public void onDestroy() {
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
super.onDestroy();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false);
MainApplication.appComponent
.rettificaGiacenzeComponent()
.create()
@ -126,7 +133,6 @@ public class RettificaGiacenzeFragment extends BaseFragment implements ITitledFr
return mBinding.getRoot();
}
private void initVars() {
thereIsAnOpenedUL.addOnPropertyChangedCallback(() -> {
thereIsntAnOpenedUL.set(!thereIsAnOpenedUL.get());

View File

@ -785,25 +785,25 @@ public class SpedizioneViewModel {
.toList();
//Controllo se una delle partite combacia con quella che voglio evadere
if(refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) {
if (refMtbColr != null && refMtbColr.getMtbPartitaMag() != null) {
MtbPartitaMag refMtbPartitaMag = refMtbColr.getMtbPartitaMag();
Optional<MtbPartitaMag> matchPartitaMag = Stream.of(availableBatchLots)
.filter(availableBatchLot -> refMtbPartitaMag.getPartitaMag().equalsIgnoreCase(availableBatchLot.getPartitaMag()))
.findFirst();
if(matchPartitaMag.isPresent()) {
if (matchPartitaMag.isPresent()) {
availableBatchLots.clear();
availableBatchLots.add(refMtbPartitaMag);
}
}
if(availableBatchLots.size() > 1) {
if (availableBatchLots.size() > 1) {
this.sendOnLoadingStarted();
List<MtbPartitaMag> tmp = new ArrayList<>();
if(Stream.of(availableBatchLots).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) {
if (Stream.of(availableBatchLots).anyMatch(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()))) {
tmp.addAll(
Stream.of(availableBatchLots)
.filter(x -> !UtilityString.isNullOrEmpty(x.getDataScadS()) && UtilityDate.getDateInstance().before(x.getDataScadD()))
@ -811,7 +811,7 @@ public class SpedizioneViewModel {
.toList());
}
if(Stream.of(availableBatchLots).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) {
if (Stream.of(availableBatchLots).anyMatch(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))) {
tmp.addAll(
Stream.of(availableBatchLots)
.filter(x -> UtilityString.isNullOrEmpty(x.getDataScadS()))
@ -822,7 +822,7 @@ public class SpedizioneViewModel {
this.sendBatchLotSelectionRequest(tmp, selected -> {
this.sendOnLoadingEnded();
if(selected != null) {
if (selected != null) {
MtbColr scannedMtbColr = Stream.of(pickingObjectDTO.getTempPickData().getSourceMtbColt().getMtbColr())
.filter(x -> x.getCodMart().equalsIgnoreCase(pickingObjectDTO.getMtbAart().getCodMart()) &&
((x.getPartitaMag() != null && selected.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(selected.getPartitaMag())) ||
@ -897,7 +897,7 @@ public class SpedizioneViewModel {
// }
if(refMtbColr != null) {
if (refMtbColr != null) {
if (pickingObjectDTO.getMtbAart().isFlagQtaCnfFissaBoolean()) {
if (UtilityBigDecimal.equalsOrLowerThan(refMtbColr.getQtaCol(), qtaDaEvadere)) {
numCnfDaPrelevare = refMtbColr.getNumCnf();
@ -1456,7 +1456,7 @@ public class SpedizioneViewModel {
refMtbColt.getMtbColr().size() > 0 ?
refMtbColt.getMtbColr().get(0) : null;
if(originalRefMtbColr != null) {
if (originalRefMtbColr != null) {
refMtbColr.setId(originalRefMtbColr.getId());
}
@ -1695,7 +1695,7 @@ public class SpedizioneViewModel {
.setRiga(null)
.setNumCollo(null)
.setGestione((String) null)
.setDataCollo(null)
.setDataCollo((String) null)
.setSerCollo(null)
.setCausale(MtbColr.Causale.VERSAMENTO);

View File

@ -2,7 +2,6 @@ package it.integry.integrywmsnative.view.dialogs.base;
import android.app.Dialog;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
@ -12,6 +11,7 @@ import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding;
/**
@ -21,7 +21,7 @@ import it.integry.integrywmsnative.databinding.DialogInputGeneralBinding;
public class DialogSimpleInputHelper {
private static Dialog makeBase(Context mContext, String titleText, String valueText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick){
private static Dialog makeBase(Context mContext, String titleText, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick){
Dialog dialog = new Dialog(mContext);
DialogSimpleInputViewModel viewModel = new DialogSimpleInputViewModel(dialog);
@ -39,10 +39,14 @@ public class DialogSimpleInputHelper {
//Title VIEW
mBinding.titleText.setText(titleText);
if (valueText != null){
mBinding.generalInput.setText(valueText);
if (!UtilityString.isNullOrEmpty(hintText)){
mBinding.generalInput.setHint(hintText);
}
if (!UtilityString.isNullOrEmpty(defaultTextValue)){
mBinding.generalInput.setText(defaultTextValue);
}
ColorStateList colorStateList = ColorStateList.valueOf(Color.WHITE);
//Content View
dialog.setCancelable(true);
@ -60,17 +64,19 @@ public class DialogSimpleInputHelper {
return makeBase(mContext,
title,
null,
null,
onPositiveClick,
onNegativeClick);
}
public static Dialog makeInputDialog(Context mContext, String title,String value, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick){
public static Dialog makeInputDialog(Context mContext, String title, String defaultTextValue, String hintText, RunnableArgs<String> onPositiveClick, Runnable onNegativeClick){
return makeBase(mContext,
title,
value,
defaultTextValue,
hintText,
onPositiveClick,
onNegativeClick);

View File

@ -31,6 +31,7 @@ public class DialogInputQuantityV2DTO {
private boolean isDataScadMandatory = false;
private boolean isNotesAllowed = false;
private boolean canLUBeClosed;
private boolean saveOnImeDone = false;
private String partitaMag;
private String note;
@ -236,4 +237,13 @@ public class DialogInputQuantityV2DTO {
this.suggestPartitaMag = suggestPartitaMag;
return this;
}
public boolean isSaveOnImeDone() {
return saveOnImeDone;
}
public DialogInputQuantityV2DTO setSaveOnImeDone(boolean saveOnImeDone) {
this.saveOnImeDone = saveOnImeDone;
return this;
}
}

View File

@ -12,6 +12,9 @@ import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -42,6 +45,7 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -94,7 +98,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_NewMaterial_Dialog_FullscreenDialog);
this.initBarcode();
}
@ -105,7 +108,6 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
mBindings = DataBindingUtil.inflate(inflater, R.layout.dialog_input_quantity_v2, container, false);
mBindings.setLifecycleOwner(this);
mBindings.toolbar.setTitle("Inserimento articolo");
MainApplication.appComponent
@ -141,7 +143,17 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
mBindings.inputQtaTotText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
}
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
if (mDialogInputQuantityV2DTO.isSaveOnImeDone()){
mBindings.inputNumCnfText.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
save();
return true;
}
return false;
});
}
return mBindings.getRoot();
}

View File

@ -8,6 +8,7 @@ import it.integry.integrywmsnative.core.exception.NoLUFoundException;
import it.integry.integrywmsnative.core.exception.TooManyLUFoundInMonoLUPositionException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
@ -17,6 +18,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume
import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityPosizione;
import it.integry.integrywmsnative.core.utility.UtilityString;
public class DialogScanOrCreateLUViewModel {
@ -62,6 +64,8 @@ public class DialogScanOrCreateLUViewModel {
this.executeEtichettaAnonima(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
this.executeEAN128(barcodeScanDTO, onComplete);
} else if (UtilityBarcode.isEan13(barcodeScanDTO)) {
this.executeEAN13(barcodeScanDTO, onComplete);
} else {
onComplete.run();
}
@ -73,8 +77,12 @@ public class DialogScanOrCreateLUViewModel {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single();
this.executePosizione(foundPosizione, onComplete);
this.mPosizioniRESTConsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
}
private void executePosizione(MtbDepoPosizione posizione, Runnable onComplete) {
this.mPosizioniRESTConsumer.getBancaliInPosizione(posizione, mtbColtList -> {
if (mtbColtList == null || mtbColtList.size() == 0) {
this.sendError(new NoLUFoundException());
@ -88,7 +96,6 @@ public class DialogScanOrCreateLUViewModel {
}
}, this::sendError);
}
@ -96,7 +103,7 @@ public class DialogScanOrCreateLUViewModel {
this.mColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), mShouldCheckResiduo, false, mtbColt -> {
if (mtbColt == null) {
if(mEnableCreation) {
if (mEnableCreation) {
this.mColliMagazzinoRESTConsumer.createColloFromEtichettaAnonima(barcodeScanDTO, GestioneEnum.LAVORAZIONE, createdMtbColt -> {
onComplete.run();
this.sendOnLUOpened(createdMtbColt, true);
@ -158,6 +165,22 @@ public class DialogScanOrCreateLUViewModel {
}, this::sendError);
}
private void executeEAN13(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeScanDTO.getStringValue(), articoli -> {
if (articoli.size() == 1) {
MtbAart articolo = articoli.get(0);
MtbDepoPosizione posizione = UtilityPosizione.getFromCache(articolo.getPosizione());
if (posizione != null && posizione.isFlagMonoCollo()) {
this.executePosizione(posizione, onComplete);
} else {
this.sendError(new NoLUFoundException());
}
} else {
this.sendError(new NoLUFoundException());
}
}, this::sendError);
}
private void sendOnLUVenditaConfirmRequired(RunnableArgs<Boolean> onConfirm) {
if (this.mListener != null) mListener.onLUVenditaConfirmRequired(onConfirm);
}

View File

@ -1,142 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewmodel"
type="it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputViewModel" />
</data>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="12dp"
android:orientation="vertical"
app:cardBackgroundColor="@android:color/transparent"
app:cardCornerRadius="24dp"
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_blue_300"
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>
<LinearLayout
<androidx.cardview.widget.CardView
android:id="@+id/base"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:paddingTop="24dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<TextView
android:id="@+id/title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextViewMaterial.Dialog.HeadlineText"
tools:text="Insert here"
android:gravity="center_horizontal"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
app:cardBackgroundColor="@color/light_blue_300"
app:cardCornerRadius="24dp"
app:cardElevation="0dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:background="@drawable/dialog_card_child_bg"
android:padding="24dp">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_left"
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title_text"
style="@style/TextViewMaterial.Dialog.HeadlineText"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.10"/>
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_right"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.90"/>
android:layout_height="wrap_content"
android:gravity="center_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Insert here" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/level_number_layout"
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="@id/guide_left"
app:layout_constraintEnd_toStartOf="@id/guide_right"
android:layout_marginBottom="16dp"
style="@style/TextInputLayout.OutlinePrimary">
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/general_input"
style="@style/TextInputEditText.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:hint="input here"
style="@style/TextInputEditText.OutlinePrimary"/>
tools:hint="input here" />
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_half_vertical"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_buttons_top"
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
android:paddingTop="12dp"
android:paddingBottom="8dp"
android:gravity="bottom|center_horizontal">
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@id/level_number_layout" />
<com.google.android.material.button.MaterialButton
android:id="@+id/button_abort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryOutline"
app:icon="@drawable/ic_clear_24dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:onClick="@{() -> viewmodel.onNegativeClick()}"
app:strokeColor="@color/colorPrimary"
android:layout_marginEnd="8dp"
android:text="@string/abort"/>
android:text="@string/abort"
app:layout_constraintEnd_toStartOf="@id/guide_half_vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/guide_buttons_top"
app:strokeColor="@color/colorPrimary" />
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.PrimaryFull"
app:icon="@drawable/ic_save_24dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:onClick="@{() -> viewmodel.onPositiveClick()}"
android:text="@string/confirm"/>
</LinearLayout>
android:text="@string/confirm"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guide_half_vertical"
app:layout_constraintTop_toBottomOf="@id/guide_buttons_top" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.cardview.widget.CardView>
</layout>

View File

@ -2,7 +2,8 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
xmlns:tools="http://schemas.android.com/tools"
>
<data>
@ -488,6 +489,8 @@
android:layout_height="wrap_content"
android:hint="@string/num_pcks"
android:imeOptions="actionDone"
android:selectAllOnFocus="true"
android:nextFocusForward="@+id/input_qta_cnf_text"
android:inputType="number"
app:binding="@{view.currentNumCnf}" />
@ -511,6 +514,8 @@
android:layout_height="wrap_content"
android:hint="@string/qty_x_pck"
android:imeOptions="actionDone"
android:selectAllOnFocus="true"
android:nextFocusForward="@+id/input_qta_tot_text"
android:inputType="numberDecimal"
app:binding="@{view.currentQtaCnf}" />
@ -535,6 +540,7 @@
android:digits="0123456789"
android:hint="@string/tot_qty"
android:inputType="number"
android:selectAllOnFocus="true"
app:binding="@{view.currentQtaTot}" />
</com.google.android.material.textfield.TextInputLayout>

View File

@ -63,81 +63,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_text" />
<!-- <com.google.android.material.button.MaterialButton-->
<!-- android:id="@+id/view_details_btn"-->
<!-- style="@style/Widget.MaterialComponents.Button.TextButton.Icon"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Vedi dettagli"-->
<!-- android:textStyle="bold"-->
<!-- app:icon="@drawable/ic_baseline_keyboard_arrow_down_24"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@id/description_text"-->
<!-- app:singleClick="@{() -> view.toggleDetailVisibility()}" />-->
<!-- <it.integry.integrywmsnative.ui.expandablelayout.ExpandableLayout-->
<!-- android:id="@+id/details_container"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@id/view_details_btn">-->
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:background="@color/gray_200">-->
<!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- android:id="@+id/not_completed_lbl"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Non completati"-->
<!-- android:textStyle="bold"-->
<!-- android:textAllCaps="true"-->
<!-- android:padding="8dp"-->
<!-- android:visibility="@{view.versamentoAutomaticoULResponseDTO.failed.empty ? View.GONE : View.VISIBLE}"-->
<!-- style="@style/TextViewMaterial.Dialog.SupportingText"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"/>-->
<!-- <com.linearlistview.LinearListView-->
<!-- android:id="@+id/details_not_completed_list"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:nestedScrollingEnabled="false"-->
<!-- app:layout_constraintTop_toBottomOf="@id/not_completed_lbl"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent" />-->
<!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- android:id="@+id/completed_lbl"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Completati"-->
<!-- android:textStyle="bold"-->
<!-- android:textAllCaps="true"-->
<!-- android:padding="8dp"-->
<!-- android:visibility="@{view.versamentoAutomaticoULResponseDTO.success.empty ? View.GONE : View.VISIBLE}"-->
<!-- style="@style/TextViewMaterial.Dialog.SupportingText"-->
<!-- app:layout_constraintTop_toBottomOf="@id/details_not_completed_list"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"/>-->
<!-- <com.linearlistview.LinearListView-->
<!-- android:id="@+id/details_completed_list"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:layout_constraintTop_toBottomOf="@id/completed_lbl"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent" />-->
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
<!-- </it.integry.integrywmsnative.ui.expandablelayout.ExpandableLayout>-->
<com.google.android.material.button.MaterialButton
android:id="@+id/button_confirm"

View File

@ -45,7 +45,7 @@
android:layout_marginRight="8dp"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:onClick="@{() -> view.selectDocInfo()}"
app:singleClick="@{() -> view.selectDocInfo()}"
android:padding="16dp">
<androidx.appcompat.widget.LinearLayoutCompat