Implementate logiche di picking UL to UL in Versamento Merce

This commit is contained in:
Gius95 2018-12-07 19:34:43 +01:00
parent fc732b4397
commit af815e87f9
41 changed files with 1514 additions and 219 deletions

Binary file not shown.

View File

@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 27

View File

@ -33,6 +33,7 @@ import it.integry.integrywmsnative.gest.main.MainFragment;
import it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment;
import it.integry.integrywmsnative.gest.settings.MainSettingsFragment;
import it.integry.integrywmsnative.gest.vendita.MainVenditaFragment;
import it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment;
import it.integry.plugins.waterfalltoolbar.WaterfallToolbar;
public class MainActivity extends AppCompatActivity
@ -149,7 +150,8 @@ public class MainActivity extends AppCompatActivity
fragment = RettificaGiacenzeFragment.newInstance();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_manage) {
fragment = VersamentoMerceFragment.newInstance();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {

View File

@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.REST.consumers;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
@ -30,4 +33,28 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
});
}
public static void getByCodMart(List<String> codMartToFind, RunnableArgs<List<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String joinedCods = Stream.of(codMartToFind)
.collect(Collectors.joining(","));
ArticoloRESTConsumerService articoloRESTConsumer = RESTBuilder.getService(ArticoloRESTConsumerService.class);
articoloRESTConsumer.getByCodMart(joinedCods).enqueue(new Callback<ServiceRESTResponse<MtbAart>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByCodMart", (m) -> {
onComplete.run(response.body().getEntityList());
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<MtbAart>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.MtbAart;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
@ -14,4 +15,7 @@ public interface ArticoloRESTConsumerService {
@POST("SM2getArticoloByBarcode")
Call<ServiceRESTResponse<MtbAart>> getByBarcodeProd(@Query("barcode") String barcodeProd);
@GET("SM2getArticoloByCodMart")
Call<ServiceRESTResponse<MtbAart>> getByCodMart(@Query("codMart") String barcodeProd);
}

View File

@ -1,8 +1,11 @@
package it.integry.integrywmsnative.core.REST.consumers;
import com.annimon.stream.Stream;
import com.google.gson.JsonObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.RESTBuilder;
@ -10,8 +13,11 @@ import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
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.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
@ -24,6 +30,26 @@ import retrofit2.Response;
public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
public static void getAvailablePosizioni(RunnableArgs<List<MtbDepoPosizione>> onComplete, RunnableArgs<Exception> onFailed) {
String codMdep = SettingsManager.i().userSession.depo.getCodMdep();
ColliMagazzinoRESTConsumerService colliMagazzinoRESTConsumerService = RESTBuilder.getService(ColliMagazzinoRESTConsumerService.class);
colliMagazzinoRESTConsumerService.getAvailablePosizioni(codMdep).enqueue(new Callback<ServiceRESTResponse<List<MtbDepoPosizione>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<MtbDepoPosizione>>> call, Response<ServiceRESTResponse<List<MtbDepoPosizione>>> response) {
analyzeAnswer(response, "getAvailablePosizioni", (m) -> {
onComplete.run(response.body().getDto());
}, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<MtbDepoPosizione>>> call, Throwable t) {
onFailed.run(new Exception(t));
}
});
}
public static void saveCollo(MtbColt mtbColtToSave, final ISimpleOperationCallback<MtbColt> callback){
EntityRESTConsumer.processEntity(mtbColtToSave, callback, MtbColt.class);
@ -132,7 +158,43 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
colliMagazzinoRESTConsumerService.getColloByBarcode(ssccString, onlyResiduo, throwExcIfNull).enqueue(new Callback<ServiceRESTResponse<MtbColt>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbColt>> call, Response<ServiceRESTResponse<MtbColt>> response) {
analyzeAnswer(response, "GetBySSCC", onComplete, onFailed);
analyzeAnswer(response, "GetBySSCC", mtbColt -> {
if(mtbColt != null && mtbColt.getMtbColr() != null && mtbColt.getMtbColr().size() > 0){
List<String> codMarts = Stream.of(mtbColt.getMtbColr())
.map(MtbColr::getCodMart)
.withoutNulls()
.distinct()
.toList();
ArticoloRESTConsumer.getByCodMart(codMarts, arts -> {
if(arts != null && arts.size() > 0) {
for (MtbColr mtbColr : mtbColt.getMtbColr()) {
MtbAart foundMtbAart = null;
List<MtbAart> mtbAartStream = Stream.of(arts)
.filter(x -> x.getCodMart().equalsIgnoreCase(mtbColr.getCodMart())).toList();
if(mtbAartStream != null && mtbAartStream.size() > 0){
foundMtbAart = mtbAartStream.get(0);
}
mtbColr.setMtbAart(foundMtbAart);
}
}
}, onFailed);
}
onComplete.run(mtbColt);
}, onFailed);
}
@Override
@ -143,6 +205,65 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
}
public static void getByTestata(MtbColt testata, boolean onlyResiduo, boolean throwExcIfNull, RunnableArgs<MtbColt> onComplete, RunnableArgs<Exception> onFailed) {
String ssccString = null;
if(testata.getSerCollo().equalsIgnoreCase(CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE)){
ssccString = "U";
SimpleDateFormat sdf = new SimpleDateFormat("yy");
ssccString += sdf.format(testata.getDataColloD());
ssccString += String.format("%07d", testata.getNumCollo());
} else {
ssccString = "";
switch (testata.getGestioneEnum()) {
case ACQUISTO:
ssccString += "1";
break;
case LAVORAZIONE:
ssccString += "2";
break;
case VENDITA:
ssccString += "3";
break;
}
SimpleDateFormat sdf = new SimpleDateFormat("yy");
ssccString += sdf.format(testata.getDataColloD());
ssccString += String.format("%05d", testata.getNumCollo());
ssccString += "0";
}
getBySSCC(ssccString, onlyResiduo, throwExcIfNull, onComplete, onFailed);
}
public static void changePosizione(MtbColt testata, MtbDepoPosizione posizione, Runnable onComplete, RunnableArgs<Exception> onFailed) {
testata.setOperation(CommonModelConsts.OPERATION.UPDATE);
if(posizione == null) testata.setPosizione(null);
else testata.setPosizione(posizione.getPosizione());
ColliMagazzinoRESTConsumer.saveCollo(testata, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
if(onComplete != null) onComplete.run();
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
public static void deleteRiga(MtbColr mtbColrToDelete, Runnable onComplete, RunnableArgs<Exception> onFailed){
@ -193,4 +314,6 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
}

View File

@ -2,17 +2,23 @@ package it.integry.integrywmsnative.core.REST.consumers;
import com.google.gson.JsonObject;
import java.util.List;
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ColliMagazzinoRESTConsumerService {
@GET("getAvailablePosizioni")
Call<ServiceRESTResponse<List<MtbDepoPosizione>>> getAvailablePosizioni(@Query("codMdep") String codMdep);
@POST("SM2DistribuzioneRigheCollo")
Call<ServiceRESTResponse<JsonObject>> distribuisciCollo(@Body DistribuzioneColloDTO distribuzioneCollo);

View File

@ -0,0 +1,41 @@
package it.integry.integrywmsnative.core.REST.consumers;
import com.annimon.stream.Stream;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.utility.UtilityDB;
public class PosizioneRESTonsumer extends _BaseRESTConsumer {
public static void getBancaliInPosizione(MtbDepoPosizione mtbDepoPosizione, RunnableArgs<List<MtbColt>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT * FROM mtb_colt WHERE cod_mdep = " + UtilityDB.valueToString(mtbDepoPosizione.getCodMdep()) + " AND posizione = " + UtilityDB.valueToString(mtbDepoPosizione.getPosizione());
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override
public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -16,12 +16,9 @@ public class ServerStatusChecker {
private List<ISingleValueOperationCallback<Boolean>> mCallback = new ArrayList<>();
private ISingleValueOperationCallback<Boolean> mInternalCallback = new ISingleValueOperationCallback<Boolean>() {
@Override
public void onResult(Boolean value) {
for (ISingleValueOperationCallback callback : mCallback) {
callback.onResult(value);
}
private ISingleValueOperationCallback<Boolean> mInternalCallback = value -> {
for (ISingleValueOperationCallback callback : mCallback) {
callback.onResult(value);
}
};

View File

@ -5,6 +5,7 @@ import android.databinding.BindingConversion;
import android.support.constraint.Guideline;
import android.support.design.widget.TextInputEditText;
import android.support.v4.util.Pair;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.AppCompatTextView;
import android.util.Log;
import android.view.View;
@ -145,6 +146,18 @@ public class Converters {
((RadioButton) view.getChildAt(newValue ? 1 : 0)).setChecked(true);
}
@BindingAdapter("app:checked")
public static void bindCheckbox(AppCompatCheckBox view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {
view.setTag(R.id.bound_observable, bindableBoolean);
view.setOnCheckedChangeListener((compoundButton, b) -> {
bindableBoolean.set(b);
});
}
Boolean newValue = bindableBoolean.get();
view.setChecked(newValue);
}
@BindingAdapter("app:checked")
public static void bindCheckbox(CheckBox view, final BindableBoolean bindableBoolean) {
if (view.getTag(R.id.bound_observable) != bindableBoolean) {

View File

@ -0,0 +1,35 @@
package it.integry.integrywmsnative.core.model;
import it.integry.integrywmsnative.core.di.BindableBoolean;
public class CheckableMtbAart {
private MtbAart mtbAart;
private BindableBoolean checked = new BindableBoolean(false);
public CheckableMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
}
public MtbAart getMtbAart() {
return mtbAart;
}
public CheckableMtbAart setMtbAart(MtbAart mtbAart) {
this.mtbAart = mtbAart;
return this;
}
public BindableBoolean getChecked() {
return checked;
}
public CheckableMtbAart setChecked(BindableBoolean checked) {
this.checked = checked;
return this;
}
public void toggleCheck() {
this.checked.set(!this.checked.get());
}
}

View File

@ -0,0 +1,36 @@
package it.integry.integrywmsnative.core.model;
import it.integry.integrywmsnative.core.di.BindableBoolean;
public class CheckableMtbColr {
private MtbColr mtbColr;
private BindableBoolean checked = new BindableBoolean(false);
public CheckableMtbColr(MtbColr mtbColr) {
this.mtbColr = mtbColr;
}
public MtbColr getMtbColr() {
return mtbColr;
}
public CheckableMtbColr setMtbColr(MtbColr mtbColr) {
this.mtbColr = mtbColr;
return this;
}
public BindableBoolean getChecked() {
return checked;
}
public CheckableMtbColr setChecked(BindableBoolean checked) {
this.checked = checked;
return this;
}
public void toggleCheck() {
this.checked.set(!this.checked.get());
}
}

View File

@ -12,82 +12,82 @@ import java.util.Date;
public class MtbAart implements Parcelable{
public String codMart;
public String descrizione;
public String untMis;
public String barCode;
public BigDecimal pesoKg;
public BigDecimal qtaCnf;
public String codAliq;
public String codScoArt;
public String codTcolUi;
public String codTcolUl;
public String articoloComposto;
public String esposizioneComp;
public String descrizioneEstesa;
public String codUltForn;
public String dataUltCar;
public BigDecimal valUltCar;
public String codUltClie;
public String dataUltScar;
public BigDecimal valUltScar;
public String tipoCodice;
public String note;
public String posizione;
public BigDecimal colliPedana;
public String untMis2;
public BigDecimal rapConv2;
public String flagInclListino;
public String untMis3;
public BigDecimal rapConv3;
public String codMartStat;
public String codMcon;
public String codMgrp;
public String codMsfa;
public String codMsgr;
public String codMstp;
public String codMtip;
public String descrizioneStat;
public String flagStato;
public BigDecimal cambioDiviCar;
public BigDecimal cambioDiviScar;
public Integer ggScadPartita;
public BigDecimal volumeMc;
public String flagEsponiPrz;
public String dataUltVar;
public BigDecimal percSfrido;
public String codBarreImb;
public String flagCalcPrz;
public String esposizioneCompAcq;
public String flagCalcPrzAcq;
public String diacod;
public String plu;
public String partIvaProd;
public String ragSocProd;
public String flagRapConvVariabile;
public String flagMovArtMag;
public String flagTracciabilita;
public BigDecimal taraKg;
public BigDecimal colliStrato;
public String flagQtaCnfFissa;
public String flagColliPedanaFisso;
public String codCconCosti;
public String codCconRicavi;
public String codDgrpArt;
public String codDiviCar;
public String codDiviScar;
public String codEcrCat;
public String codEcrMcat;
public String codEcrRep;
public String codEcrStipo;
public String codEcrTipo;
public String codGrpBolla;
public String ingredienti;
public String idArtEqui;
public String descrCassa;
public String codNcIntracee;
public String marchio;
public Integer sezione;
private String codMart;
private String descrizione;
private String untMis;
private String barCode;
private BigDecimal pesoKg;
private BigDecimal qtaCnf;
private String codAliq;
private String codScoArt;
private String codTcolUi;
private String codTcolUl;
private String articoloComposto;
private String esposizioneComp;
private String descrizioneEstesa;
private String codUltForn;
private String dataUltCar;
private BigDecimal valUltCar;
private String codUltClie;
private String dataUltScar;
private BigDecimal valUltScar;
private String tipoCodice;
private String note;
private String posizione;
private BigDecimal colliPedana;
private String untMis2;
private BigDecimal rapConv2;
private String flagInclListino;
private String untMis3;
private BigDecimal rapConv3;
private String codMartStat;
private String codMcon;
private String codMgrp;
private String codMsfa;
private String codMsgr;
private String codMstp;
private String codMtip;
private String descrizioneStat;
private String flagStato;
private BigDecimal cambioDiviCar;
private BigDecimal cambioDiviScar;
private Integer ggScadPartita;
private BigDecimal volumeMc;
private String flagEsponiPrz;
private String dataUltVar;
private BigDecimal percSfrido;
private String codBarreImb;
private String flagCalcPrz;
private String esposizioneCompAcq;
private String flagCalcPrzAcq;
private String diacod;
private String plu;
private String partIvaProd;
private String ragSocProd;
private String flagRapConvVariabile;
private String flagMovArtMag;
private String flagTracciabilita;
private BigDecimal taraKg;
private BigDecimal colliStrato;
private String flagQtaCnfFissa;
private String flagColliPedanaFisso;
private String codCconCosti;
private String codCconRicavi;
private String codDgrpArt;
private String codDiviCar;
private String codDiviScar;
private String codEcrCat;
private String codEcrMcat;
private String codEcrRep;
private String codEcrStipo;
private String codEcrTipo;
private String codGrpBolla;
private String ingredienti;
private String idArtEqui;
private String descrCassa;
private String codNcIntracee;
private String marchio;
private Integer sezione;
public MtbAart(){}

View File

@ -332,9 +332,14 @@ public class MtbColt extends EntityBase implements Parcelable {
return dataCollo;
}
public Date getDataColloD() throws ParseException {
public Date getDataColloD() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
return sdf.parse(getDataColloS());
try {
return sdf.parse(getDataColloS());
} catch (ParseException e) {
UtilityLogger.errorMe(e);
return null;
}
}
public MtbColt setDataCollo(String dataCollo) {

View File

@ -0,0 +1,49 @@
package it.integry.integrywmsnative.core.model;
public class MtbDepoPosizione {
private String codMdep;
private String posizione;
private String descrizione;
private String flagMonoCollo;
public String getCodMdep() {
return codMdep;
}
public MtbDepoPosizione setCodMdep(String codMdep) {
this.codMdep = codMdep;
return this;
}
public String getPosizione() {
return posizione;
}
public MtbDepoPosizione setPosizione(String posizione) {
this.posizione = posizione;
return this;
}
public String getDescrizione() {
return descrizione;
}
public MtbDepoPosizione setDescrizione(String descrizione) {
this.descrizione = descrizione;
return this;
}
public String getFlagMonoCollo() {
return flagMonoCollo;
}
public MtbDepoPosizione setFlagMonoCollo(String flagMonoCollo) {
this.flagMonoCollo = flagMonoCollo;
return this;
}
public boolean isFlagMonoCollo() {
return flagMonoCollo.equalsIgnoreCase("S");
}
}

View File

@ -3,11 +3,14 @@ package it.integry.integrywmsnative.core.settings;
import java.util.List;
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.model.MtbDepo;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
public class DBSettingsModel {
private List<String> availableProfiles = null;
private List<AvailableCodMdepsDTO> availableCodMdep = null;
private List<MtbDepoPosizione> availablePosizioni = null;
private boolean enableCheckPartitaMagCheckPickingV;
private boolean flagMultiClienteOrdV;
@ -18,10 +21,18 @@ public class DBSettingsModel {
return availableProfiles;
}
public List<MtbDepoPosizione> getAvailablePosizioni() {
return availablePosizioni;
}
public void setAvailableProfiles(List<String> availableProfiles) {
this.availableProfiles = availableProfiles;
}
public void setAvailablePosizioni(List<MtbDepoPosizione> availablePosizioni) {
this.availablePosizioni = availablePosizioni;
}
public List<AvailableCodMdepsDTO> getAvailableCodMdep() {
return availableCodMdep;
}

View File

@ -5,6 +5,7 @@ import android.content.Context;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.GestSetupRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
@ -69,7 +70,8 @@ public class SettingsManager {
loadAvailableProfiles(() ->
loadAvailableCodMdeps(() ->
loadGestSetupValues(onComplete, onFailed) ,onFailed), onFailed);
loadAvailablePosizioni(() ->
loadGestSetupValues(onComplete, onFailed) ,onFailed), onFailed), onFailed);
}
private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs<Exception> onFailed){
@ -129,6 +131,18 @@ public class SettingsManager {
}
private static void loadAvailablePosizioni(Runnable onComplete, RunnableArgs<Exception> onFailed) {
ColliMagazzinoRESTConsumer.getAvailablePosizioni(availablePosizioni -> {
dbSettingsModelIstance.setAvailablePosizioni(availablePosizioni);
if(onComplete != null) onComplete.run();
}, ex -> {
if(onFailed != null) onFailed.run(ex);
}
);
}
private static void loadGestSetupValues(Runnable onComplete, RunnableArgs<Exception> onFailed) {
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", valueDefaultCausaleRettificaGiacenze -> {
dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(valueDefaultCausaleRettificaGiacenze.value);

View File

@ -1,5 +1,9 @@
package it.integry.integrywmsnative.core.utility;
import com.annimon.stream.Stream;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
@ -9,6 +13,23 @@ public class UtilityBarcode {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128 && barcodeScanDTO.getStringValue().startsWith("U");
}
public static boolean isEtichettaPosizione(BarcodeScanDTO barcodeScanDTO) {
String barcode = barcodeScanDTO.getStringValue();
boolean isPosizione = false;
if(SettingsManager.iDB().getAvailablePosizioni() != null) {
Stream<MtbDepoPosizione> tmpStream = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcode));
if(tmpStream.count() > 0){
isPosizione = true;
}
}
return barcodeScanDTO != null && isPosizione;
}
public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN13 && barcodeScanDTO.getStringValue().startsWith("2");
}

View File

@ -10,29 +10,26 @@ import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCall
public class UtilityServer {
public static void isHostReachable(final String serverAddress, final int serverTCPport, final ISingleValueOperationCallback<Boolean> callback){
new Thread(new Runnable() {
@Override
public void run() {
new Thread(() -> {
boolean connected = false;
Socket socket;
try {
socket = new Socket();
SocketAddress socketAddress = new InetSocketAddress(serverAddress, serverTCPport);
socket.connect(socketAddress, 10000);
if (socket.isConnected()) {
connected = true;
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
socket = null;
boolean connected = false;
Socket socket;
try {
socket = new Socket();
SocketAddress socketAddress = new InetSocketAddress(serverAddress, serverTCPport);
socket.connect(socketAddress, 10000);
if (socket.isConnected()) {
connected = true;
socket.close();
}
callback.onResult(connected);
} catch (IOException e) {
e.printStackTrace();
} finally {
socket = null;
}
callback.onResult(connected);
}).start();

View File

@ -206,7 +206,7 @@ public class AccettazioneOrdineInevasoHelper {
}
}
Collections.sort(tmpList, (obj1, obj2) -> obj1.mtbAart.descrizioneEstesa.compareToIgnoreCase(obj2.mtbAart.descrizioneEstesa));
Collections.sort(tmpList, (obj1, obj2) -> obj1.mtbAart.getDescrizioneEstesa().compareToIgnoreCase(obj2.mtbAart.getDescrizioneEstesa()));
if(tmpList.size() > 0){
groupedRighe.add(tmpList);
@ -278,7 +278,7 @@ public class AccettazioneOrdineInevasoHelper {
rowModel.setBadge1(rowItem.codArtFor);
rowModel.setBadge2(String.valueOf(rowItem.numOrd));
rowModel.setDescrizione(rowItem.mtbAart.descrizioneEstesa);
rowModel.setDescrizione(rowItem.mtbAart.getDescrizioneEstesa());
rowModel.setQtaRiservata(getRigaQuantityEvasa(rowItem, mtbColrs));
// rowModel.qtaRiservata = decimalFormat.format(rowItem.qtaRiservate);
@ -303,7 +303,7 @@ public class AccettazioneOrdineInevasoHelper {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
List<MtbColr> filteredMtbColrs = Stream.of(mtbColrs).filter(
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.codMart) &&
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) &&
(x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.codJcom)) &&
x.getRigaOrd() == item.rigaOrd &&
x.getNumOrd() == item.numOrd &&

View File

@ -319,7 +319,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
removeListFilter();
List<OrdineAccettazioneDTO.Riga> foundRowsList = Stream.of(groupedOrdini)
.filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(mtbAart.codMart) &&
.filter(x -> x.getMtbAart().getCodMart().equalsIgnoreCase(mtbAart.getCodMart()) &&
(x.isHidden() != null && !x.isHidden()) && (x.isTempHidden() != null && !x.isTempHidden()))
.toList();
@ -675,7 +675,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
List<MtbColr> currentMtbColrs = mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr();
List<MtbColr> filteredMtbColrs = Stream.of(currentMtbColrs).filter(
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.codMart) &&
x -> x.getCodMart().equalsIgnoreCase(item.mtbAart.getCodMart()) &&
x.getNumOrd() == item.numOrd &&
(x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.codJcom)) &&
x.getRigaOrd() == item.rigaOrd).toList();
@ -746,7 +746,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
mActivity.getText(R.string.loading) + " ...", true);
final MtbColr mtbColr = new MtbColr()
.setCodMart(item.mtbAart.codMart)
.setCodMart(item.mtbAart.getCodMart())
.setPartitaMag(quantityDTO.batchLot.get())
.setDataScadPartita(quantityDTO.expireDate)
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
@ -774,7 +774,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().untMis)
.setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
//item.setQtaRiservate(item.getQtaRiservate().add(mtbColr.getQtaCol()));

View File

@ -56,8 +56,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.setView(this);
mBinding.setViewmodel(mRettificaGiacenzeViewModel);
ButterKnife.bind(this, mBinding.getRoot());
init();
return mBinding.getRoot();
}

View File

@ -38,10 +38,8 @@ import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
@ -51,13 +49,12 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.Rettific
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.ui.StatusBarAlert;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArt;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
import kotlin.NotImplementedError;
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> {
@ -148,18 +145,6 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
BarcodeManager.enable();
}
/*
if(UtilityBarcode.isEtichettaAnonima(data) && !thereIsAnOpenedUL()){
this.executeEtichettaAnonima(data, progressDialog);
} else if(data.getType() == BarcodeType.EAN128) {
this.executeEtichettaEan128(data, progressDialog);
} else if(UtilityBarcode.isEanPeso(data)){
this.executeEtichettaEanPeso(data, progressDialog);
} else {
this.loadArticolo(data.getStringValue(), null, progressDialog);
}
*/
};
@ -265,7 +250,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
} else if(articoloFornitoreDTOS.size() == 1) {
dispatchArt(articoloFornitoreDTOS.get(0));
} else {
DialogChooseArtFromListaArt.makeBase(mContext, articoloFornitoreDTOS, this::dispatchArt).show();
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, this::dispatchArt).show();
}
} else {
showNoArtsFound();
@ -284,9 +269,9 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
qtaDto.setMtbAart(mtbAart);
qtaDto.setQtaCnf(mtbAart.qtaCnf);
qtaDto.setQtaCnf(mtbAart.getQtaCnf());
qtaDto.setNumCnf(1);
qtaDto.setQtaTot(mtbAart.qtaCnf);
qtaDto.setQtaTot(mtbAart.getQtaCnf());
qtaDto.setQtaDaEvadere(new BigDecimal(-1));
@ -333,11 +318,11 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
mContext.getText(R.string.loading) + " ...", true);
final MtbColr mtbColr = new MtbColr()
.setCodMart(mtbAart.codMart)
.setCodMart(mtbAart.getCodMart())
.setPartitaMag(quantityDTO.batchLot.get())
.setDataScadPartita(quantityDTO.expireDate)
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
.setDescrizione(mtbAart.descrizioneEstesa);
.setDescrizione(mtbAart.getDescrizioneEstesa());
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
@ -357,7 +342,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(mtbAart.untMis)
.setUntMis(mtbAart.getUntMis())
.setMtbAart(mtbAart);
mtbColt.get().getMtbColr().add(mtbColr);
@ -406,7 +391,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
}
public void openLU() {
DialogScanOrCreateLU.makeBase(mContext, mtbColt -> {
DialogScanOrCreateLU.make(mContext, mtbColt -> {
if(mtbColt == null) {
((MainActivity)mContext).popToMain();
} else {

View File

@ -99,6 +99,8 @@ public class VenditaOrdineInevasoHelper {
final PickingObjectDTO currentItem = currentGroup.get(k);
final VenditaOrdineInevasoListViewModel.SubItem rowModel = new VenditaOrdineInevasoListViewModel.SubItem();
String badge1 = currentItem.getCodAlis() + " - " + (!UtilityString.isNullOrEmpty(currentItem.getCodArtFor()) ? currentItem.getCodArtFor() : currentItem.getCodMart());
rowModel.setBadge1(badge1);

View File

@ -929,7 +929,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().untMis)
.setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr);

View File

@ -1,4 +1,110 @@
package it.integry.integrywmsnative.gest.versamento_merce;
public class VersamentoMerceFragment {
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.FragmentMainVersamentoMerceBinding;
import it.integry.integrywmsnative.gest.versamento_merce.core.VersamentoMerceHelper;
import it.integry.integrywmsnative.gest.versamento_merce.viewmodel.VersamentoMerceViewModel;
public class VersamentoMerceFragment extends Fragment implements ITitledFragment {
private FragmentMainVersamentoMerceBinding mBinding;
private VersamentoMerceViewModel mVersamentoMerceViewModel;
private VersamentoMerceHelper mHelper;
private int barcodeScannerIstanceID = -1;
public VersamentoMerceFragment() {
// Required empty public constructor
}
public static VersamentoMerceFragment newInstance() {
VersamentoMerceFragment fragment = new VersamentoMerceFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
//mParam1 = getArguments().getString(ARG_PARAM1);
//mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_versamento_merce, container, false);
mVersamentoMerceViewModel = new VersamentoMerceViewModel();
mBinding.setView(this);
mBinding.setViewmodel(mVersamentoMerceViewModel);
init();
return mBinding.getRoot();
}
private void init() {
mHelper = new VersamentoMerceHelper(getActivity());
mVersamentoMerceViewModel.init(getActivity(), mBinding, mHelper);
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(mVersamentoMerceViewModel.onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
/*
mHelper.loadListaFornitori(listaFornitori -> {
mRettificaGiacenzeViewModel.setupSearchFornitori(listaFornitori);
});
mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn();
});
mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn();
});
mBinding.inputCodArtDescrInt.setOnFocusChangeListener((v, hasFocus) -> {
setUIToIntArt();
});
*/
mVersamentoMerceViewModel.openLU();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
@Override
public String getTitle(Context context) {
return context.getResources().getString(R.string.versamento_merce_fragment_title);
}
}

View File

@ -0,0 +1,13 @@
package it.integry.integrywmsnative.gest.versamento_merce.core;
import android.content.Context;
public class VersamentoMerceHelper {
private Context mContext;
public VersamentoMerceHelper(Context context) {
this.mContext = context;
}
}

View File

@ -0,0 +1,258 @@
package it.integry.integrywmsnative.gest.versamento_merce.viewmodel;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.databinding.ObservableField;
import android.text.SpannableString;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.PosizioneRESTonsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
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.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainVersamentoMerceBinding;
import it.integry.integrywmsnative.gest.versamento_merce.core.VersamentoMerceHelper;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts.DialogChooseArtsFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class VersamentoMerceViewModel {
private Context mContext;
private FragmentMainVersamentoMerceBinding mBinding;
private VersamentoMerceHelper mHelper;
public ObservableField<MtbColt> mtbColt = new ObservableField<>();
public void init(Activity context, FragmentMainVersamentoMerceBinding binding, VersamentoMerceHelper helper) {
mContext = context;
mBinding = binding;
mHelper = helper;
}
public void openLU() {
DialogScanOrCreateLU.make(mContext, true, mtbColt -> {
if(mtbColt == null) {
((MainActivity)mContext).popToMain();
} else {
setMtbColt(mtbColt);
}
}).show();
}
public void setMtbColt(MtbColt mtbColt) {
this.mtbColt.set(mtbColt);
}
public void resetMtbColt() {
this.mtbColt.set(null);
}
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
if(UtilityBarcode.isEtichettaPosizione(data)){
progressDialog.show();
this.executeEtichettaPosizione(data, progressDialog);
} else if(data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA){
//searchArtInt(data.getStringValue());
} else if(data.getType() == BarcodeType.EAN128) {
this.executeEtichettaEan128(data, progressDialog);
} else {
BarcodeManager.enable();
}
};
private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single();
if(foundPosizione.isFlagMonoCollo()) {
PosizioneRESTonsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
if(mtbColtList == null || mtbColtList.size() == 0){
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
} else if (mtbColtList.size() == 1) {
ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
//TAKE HERE
pickMerceULtoUL(mtbColt, progressDialog);
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
} else {
ColliMagazzinoRESTConsumer.changePosizione(mtbColt.get(), foundPosizione, () -> {
progressDialog.dismiss();
BarcodeManager.enable();
resetMtbColt();
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
}
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if(!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if(!UtilityString.isNullOrEmpty(ean128Model.Content)) barcodeProd = ean128Model.Content;
if(!UtilityString.isNullOrEmpty(barcodeProd)) {
if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)){
this.executeEtichettaLU(ean128Model.Sscc, progressDialog);
} else {
showNoULFound();
progressDialog.dismiss();
BarcodeManager.enable();
}
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
progressDialog.dismiss();
BarcodeManager.enable();
}
}, ex-> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void executeEtichettaLU(String sscc, ProgressDialog progressDialog) {
ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> {
//TAKE HERE
pickMerceULtoUL(mtbColt, progressDialog);
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void pickMerceULtoUL(MtbColt destMtbColt, ProgressDialog progressDialog) {
List<MtbColr> mtbColrsToPick = Stream.of(mtbColt.get().getMtbColr())
.filter(x -> x.getQtaCol().floatValue() > 0)
.toList();
DialogChooseArtsFromListaArts.make(mContext, mtbColrsToPick, pickedAarts -> {
progressDialog.dismiss();
UtilityToast.showToast("Selezionati " + pickedAarts.size() + " articoli");
List<MtbColr> destNewMtbColr = new ArrayList<>();
askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> {
BarcodeManager.enable();
UtilityToast.showToast("Create " + destNewMtbColr.size() + " nuove righe");
});
}, () -> {
progressDialog.dismiss();
BarcodeManager.enable();
}).show();
}
private void askQuantities(Iterator<MtbColr> sourceMtbColrs, List<MtbColr> destMtbColr, Runnable onComplete){
if(sourceMtbColrs.hasNext()){
askSingleQuantity(sourceMtbColrs.next(), mtbColr -> {
destMtbColr.add(mtbColr);
askQuantities(sourceMtbColrs, destMtbColr, onComplete);
});
} else {
onComplete.run();
}
}
private void askSingleQuantity(MtbColr mtbColr, RunnableArgs<MtbColr> onComplete) {
DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO()
.setBatchLot(mtbColr.getPartitaMag())
.setDataScad(mtbColr.getDataScadPartitaD())
.setMtbAart(mtbColr.getMtbAart())
.setQtaTot(mtbColr.getQtaCol())
.setQtaOrd(mtbColr.getQtaCol())
.setQtaDaEvadere(new BigDecimal(-1))
.setQtaEvasa(BigDecimal.ZERO)
.setCanPartitaMagBeChanged(false)
.setCanDataScadBeChanged(false)
.setMaxQta(mtbColr.getQtaCol());
DialogInputQuantity.makeBase(mContext, dto, false, value -> {
onComplete.run(mtbColr);
}).show();
}
private void showNoULFound() {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, null).show();
}
}

View File

@ -14,20 +14,24 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtBinding;
public class DialogChooseArtFromListaArt {
public class DialogChooseArtFromListaArts {
private static Context currentContext;
private static AlertDialog currentAlert;
private Context currentContext;
private AlertDialog currentAlert;
private static DialogChooseArtFromListaArtAdapter currentAdapter;
private DialogChooseArtFromListaArtsAdapter currentAdapter;
private static RunnableArgs<MtbAart> mOnItemChoosed;
private RunnableArgs<MtbAart> mOnItemChoosed;
public static AlertDialog makeBase(final Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
public static AlertDialog make(final Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
return new DialogChooseArtFromListaArts(context, listaArts, onItemChoosed).currentAlert;
}
private DialogChooseArtFromListaArts(Context context, List<MtbAart> listaArts, RunnableArgs<MtbAart> onItemChoosed) {
currentContext = context;
mOnItemChoosed = onItemChoosed;
@ -44,11 +48,9 @@ public class DialogChooseArtFromListaArt {
currentAlert.setCanceledOnTouchOutside(false);
initRecyclerView(binding, listaArts);
return currentAlert;
}
private static void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
private void initRecyclerView(DialogChooseArtFromListaArtBinding binding, List<MtbAart> dataset) {
binding.dialogChooseArtFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtFromListaArtMainList.setHasFixedSize(true);
@ -59,11 +61,11 @@ public class DialogChooseArtFromListaArt {
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtFromListaArtMainList.addItemDecoration(itemDecorator);
currentAdapter = new DialogChooseArtFromListaArtAdapter(currentContext, dataset, onItemClicked);
currentAdapter = new DialogChooseArtFromListaArtsAdapter(currentContext, dataset, onItemClicked);
binding.dialogChooseArtFromListaArtMainList.setAdapter(currentAdapter);
}
private static IRecyclerItemClicked<MtbAart> onItemClicked = (item, position) -> {
private IRecyclerItemClicked<MtbAart> onItemClicked = (item, position) -> {
if(mOnItemChoosed != null) {
mOnItemChoosed.run(item);
}

View File

@ -11,10 +11,9 @@ import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.databinding.DialogChooseArtFromListaArtItemModelBinding;
public class DialogChooseArtFromListaArtAdapter extends RecyclerView.Adapter<DialogChooseArtFromListaArtAdapter.ViewHolder> {
public class DialogChooseArtFromListaArtsAdapter extends RecyclerView.Adapter<DialogChooseArtFromListaArtsAdapter.ViewHolder> {
protected Context mContext;
@ -36,14 +35,14 @@ public class DialogChooseArtFromListaArtAdapter extends RecyclerView.Adapter<Dia
}
}
public DialogChooseArtFromListaArtAdapter(Context context, List<MtbAart> myDataset, IRecyclerItemClicked<MtbAart> onItemClickListener) {
public DialogChooseArtFromListaArtsAdapter(Context context, List<MtbAart> myDataset, IRecyclerItemClicked<MtbAart> onItemClickListener) {
mContext = context;
mDataset = myDataset;
mOnItemClickListener = onItemClickListener;
}
@Override
public DialogChooseArtFromListaArtAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
public DialogChooseArtFromListaArtsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
DialogChooseArtFromListaArtItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_art_from_lista_art__item_model, parent, false);
@ -51,7 +50,7 @@ public class DialogChooseArtFromListaArtAdapter extends RecyclerView.Adapter<Dia
}
@Override
public void onBindViewHolder(DialogChooseArtFromListaArtAdapter.ViewHolder holder, int position) {
public void onBindViewHolder(DialogChooseArtFromListaArtsAdapter.ViewHolder holder, int position) {
MtbAart item = mDataset.get(position);
holder.bind(item);
@ -63,7 +62,7 @@ public class DialogChooseArtFromListaArtAdapter extends RecyclerView.Adapter<Dia
}
@Override
public void onViewRecycled(DialogChooseArtFromListaArtAdapter.ViewHolder holder) {
public void onViewRecycled(DialogChooseArtFromListaArtsAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}

View File

@ -0,0 +1,104 @@
package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts;
import android.content.Context;
import android.content.DialogInterface;
import android.databinding.DataBindingUtil;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsLayoutBinding;
public class DialogChooseArtsFromListaArts {
private Context currentContext;
private AlertDialog currentAlert;
private DialogChooseArtsFromListaArtsAdapter currentAdapter;
private RunnableArgs<List<MtbColr>> mOnItemsChoosed;
private Runnable mOnAbort;
public static AlertDialog make(final Context context, List<MtbColr> listaMtbColr, RunnableArgs<List<MtbColr>> onItemsChoosed, Runnable onAbort) {
return new DialogChooseArtsFromListaArts(context, listaMtbColr, onItemsChoosed, onAbort).currentAlert;
}
private DialogChooseArtsFromListaArts(Context context, List<MtbColr> listaMtbColr, RunnableArgs<List<MtbColr>> onItemsChoosed, Runnable onAbort) {
currentContext = context;
mOnItemsChoosed = onItemsChoosed;
mOnAbort = onAbort;
if(listaMtbColr != null){
for (MtbColr mtbColr : listaMtbColr) {
if(UtilityString.isNullOrEmpty(mtbColr.getUntMis()) && mtbColr.getMtbAart() != null){
mtbColr.setUntMis(mtbColr.getMtbAart().getUntMis());
}
}
}
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DialogChooseArtsFromListaArtsLayoutBinding binding = DataBindingUtil.inflate(inflater, R.layout.dialog_choose_arts_from_lista_arts_layout, null, false);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(binding.getRoot())
.setPositiveButton(context.getText(R.string.confirm), (dialogInterface, i) -> {
onPositiveClick();
})
.setNegativeButton(context.getText(R.string.abort), ((dialogInterface, i) -> {
onNegativeClick();
}));
currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false);
initRecyclerView(binding, listaMtbColr);
}
private void initRecyclerView(DialogChooseArtsFromListaArtsLayoutBinding binding, List<MtbColr> dataset) {
binding.dialogChooseArtsFromListaArtMainList.setNestedScrollingEnabled(false);
binding.dialogChooseArtsFromListaArtMainList.setHasFixedSize(true);
binding.dialogChooseArtsFromListaArtMainList.setLayoutManager(new LinearLayoutManager(currentContext));
DividerItemDecoration itemDecorator = new DividerItemDecoration(currentContext, DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(currentContext, R.drawable.divider));
binding.dialogChooseArtsFromListaArtMainList.addItemDecoration(itemDecorator);
currentAdapter = new DialogChooseArtsFromListaArtsAdapter(currentContext, dataset);
binding.dialogChooseArtsFromListaArtMainList.setAdapter(currentAdapter);
}
private void onPositiveClick() {
if(mOnItemsChoosed != null) {
mOnItemsChoosed.run(currentAdapter.getSelectedItems());
}
}
private void onNegativeClick() {
if(this.mOnAbort != null) mOnAbort.run();
}
}

View File

@ -0,0 +1,84 @@
package it.integry.integrywmsnative.view.dialogs.choose_arts_from_lista_arts;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.annimon.stream.Stream;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.model.CheckableMtbAart;
import it.integry.integrywmsnative.core.model.CheckableMtbColr;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.databinding.DialogChooseArtsFromListaArtsItemModelBinding;
public class DialogChooseArtsFromListaArtsAdapter extends RecyclerView.Adapter<DialogChooseArtsFromListaArtsAdapter.ViewHolder> {
protected Context mContext;
private List<CheckableMtbColr> mDataset;
public DialogChooseArtsFromListaArtsAdapter(Context context, List<MtbColr> myDataset) {
mContext = context;
if(myDataset != null) {
mDataset = Stream.of(myDataset)
.withoutNulls()
.map(CheckableMtbColr::new).toList();
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
protected DialogChooseArtsFromListaArtsItemModelBinding mViewDataBinding;
public ViewHolder(DialogChooseArtsFromListaArtsItemModelBinding v) {
super(v.getRoot());
mViewDataBinding = v;
}
public void bind(CheckableMtbColr checkableMtbColr) {
mViewDataBinding.setCheckableMtbColr(checkableMtbColr);
mViewDataBinding.executePendingBindings();
}
}
@Override
public DialogChooseArtsFromListaArtsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
DialogChooseArtsFromListaArtsItemModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.dialog_choose_arts_from_lista_arts__item_model, parent, false);
return new ViewHolder(viewDataBinding);
}
@Override
public void onBindViewHolder(DialogChooseArtsFromListaArtsAdapter.ViewHolder holder, int position) {
CheckableMtbColr item = mDataset.get(position);
holder.bind(item);
}
@Override
public void onViewRecycled(DialogChooseArtsFromListaArtsAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
public List<MtbColr> getSelectedItems() {
return Stream.of(mDataset)
.filter(y -> y.getChecked().get())
.map(CheckableMtbColr::getMtbColr).toList();
}
}

View File

@ -193,20 +193,24 @@ public class DialogInputQuantity {
}
}
private static ColorStateList originalColorStateList = null;
private ColorStateList originalColorStateList = null;
private static String scadenzaString = "Scadenza";
private String scadenzaString = "Scadenza";
private static AlertDialog currentAlert;
private static Context currentContext;
private AlertDialog currentAlert;
private Context currentContext;
private static DialogInputQuantityArticoloBinding currentBinding;
private DialogInputQuantityArticoloBinding currentBinding;
private static MtbAart currentMtbAart;
private static QuantityDTO currentQuantityDto;
private static DTO currentDTO;
private MtbAart currentMtbAart;
private QuantityDTO currentQuantityDto;
private DTO currentDTO;
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback).currentAlert;
}
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
currentContext = context;
currentMtbAart = dto.getMtbAart();
currentDTO = dto;
@ -272,12 +276,9 @@ public class DialogInputQuantity {
initDatePicker(context, currentQuantityDto, currentBinding.getRoot().findViewById(R.id.input_data_scad));
setupBarcode(context);
return currentAlert;
}
private static void setupQuantities(DTO dto, QuantityDTO quantityDTO){
private void setupQuantities(DTO dto, QuantityDTO quantityDTO){
if(dto.getQtaTot() != null) quantityDTO.qtaTot.set(dto.getQtaTot().floatValue());
if(dto.getMaxQta() != null) quantityDTO.maxQta = dto.getMaxQta().floatValue();
@ -295,7 +296,7 @@ public class DialogInputQuantity {
if(dto.getQtaCnf() != null) {
quantityDTO.qtaCnf.set(dto.getQtaCnf().floatValue());
} else {
quantityDTO.qtaCnf.set(dto.mtbAart.qtaCnf.floatValue());
quantityDTO.qtaCnf.set(dto.mtbAart.getQtaCnf().floatValue());
}
}
@ -337,7 +338,7 @@ public class DialogInputQuantity {
}
private static void setupBarcode(Context context) {
private void setupBarcode(Context context) {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
@ -350,7 +351,7 @@ public class DialogInputQuantity {
}
private static RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
if(UtilityBarcode.isEanPeso(data)){
@ -429,7 +430,7 @@ public class DialogInputQuantity {
};
private static void setupQuantityListener(final QuantityDTO quantityDTO, final TextInputLayout txlInputNumDiCnf, final TextInputLayout txlInputQtaPerCnf, final TextInputLayout txlInputQtaTot) {
private void setupQuantityListener(final QuantityDTO quantityDTO, final TextInputLayout txlInputNumDiCnf, final TextInputLayout txlInputQtaPerCnf, final TextInputLayout txlInputQtaTot) {
quantityDTO.numCnf.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
@ -562,7 +563,7 @@ public class DialogInputQuantity {
}
private static void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) {
private void initDatePicker(Context context, QuantityDTO quantityDTO, AppCompatTextView textInputLayout) {
quantityDTO.expireDateString.set(scadenzaString);
if(quantityDTO.expireDate != null) {
@ -598,7 +599,7 @@ public class DialogInputQuantity {
}
private static void onConfirm(Context context, QuantityDTO quantityDTO, ISingleValueOperationCallback<QuantityDTO> dialogCallback){
private void onConfirm(Context context, QuantityDTO quantityDTO, ISingleValueOperationCallback<QuantityDTO> dialogCallback){
if(currentDTO.mtbAart.isFlagTracciabilita() && (quantityDTO.batchLot == null || quantityDTO.batchLot.get().trim().length() == 0)){
showBatchLotErrorPrompt(context);
@ -628,7 +629,7 @@ public class DialogInputQuantity {
}
private static void showQuantityErrorDialog(Context mContext){
private void showQuantityErrorDialog(Context mContext){
String errorMessage = mContext.getText(R.string.wrong_quantity_input_message).toString();
@ -636,7 +637,7 @@ public class DialogInputQuantity {
}
private static void showQuantityOverflowErrorPrompt(Context mContext){
private void showQuantityOverflowErrorPrompt(Context mContext){
String errorMessage = mContext.getText(R.string.quantity_overflow_error_message).toString();
@ -644,7 +645,7 @@ public class DialogInputQuantity {
}
private static void showExpireDateErrorPrompt(Context mContext){
private void showExpireDateErrorPrompt(Context mContext){
String errorMessage = mContext.getText(R.string.expire_date_error_message).toString();
@ -652,7 +653,7 @@ public class DialogInputQuantity {
}
private static void showBatchLotErrorPrompt(Context mContext){
private void showBatchLotErrorPrompt(Context mContext){
String errorMessage = mContext.getText(R.string.batch_lot_error_message).toString();

View File

@ -9,19 +9,26 @@ import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import com.annimon.stream.Stream;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.PosizioneRESTonsumer;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.DialogScanOrCreateLuBinding;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
@ -29,18 +36,26 @@ import it.integry.plugins.barcode_base_library.model.BarcodeType;
public class DialogScanOrCreateLU {
private static Context currentContext;
private Context currentContext;
private static AlertDialog currentAlert;
private AlertDialog currentAlert;
private static DialogScanOrCreateLuBinding mBinding;
private DialogScanOrCreateLuBinding mBinding;
private static RunnableArgs<MtbColt> mOnDialogDismiss;
private RunnableArgs<MtbColt> mOnDialogDismiss;
private static MtbColt currentMtbColt;
private MtbColt currentMtbColt;
public static AlertDialog makeBase(final Context context, RunnableArgs<MtbColt> onDialogDismiss) {
public static AlertDialog make(final Context context, RunnableArgs<MtbColt> onDialogDismiss) {
return new DialogScanOrCreateLU(context, false, onDialogDismiss).currentAlert;
}
public static AlertDialog make(final Context context, boolean disableCreation, RunnableArgs<MtbColt> onDialogDismiss) {
return new DialogScanOrCreateLU(context, disableCreation, onDialogDismiss).currentAlert;
}
private DialogScanOrCreateLU(Context context, boolean disableCreation, RunnableArgs<MtbColt> onDialogDismiss) {
mOnDialogDismiss = null;
currentMtbColt = null;
@ -50,6 +65,8 @@ public class DialogScanOrCreateLU {
mBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_scan_or_create_lu, null, false);
if(disableCreation) mBinding.dialogScanOrCreateLuCreationLayout.setVisibility(View.GONE);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(mBinding.getRoot());
@ -58,12 +75,10 @@ public class DialogScanOrCreateLU {
init(onDialogDismiss);
initBarcode(context);
return currentAlert;
}
private static void init(RunnableArgs<MtbColt> onDialogDismiss) {
private void init(RunnableArgs<MtbColt> onDialogDismiss) {
mOnDialogDismiss = onDialogDismiss;
mBinding.createNewLuButton.setOnClickListener(v -> {
@ -78,7 +93,7 @@ public class DialogScanOrCreateLU {
});
}
private static void initBarcode(Context context) {
private void initBarcode(Context context) {
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(onScanSuccessfull)
@ -86,6 +101,7 @@ public class DialogScanOrCreateLU {
currentAlert.setOnDismissListener(dialog -> {
BarcodeManager.removeCallback(barcodeIstanceID);
BarcodeManager.enable();
if(currentMtbColt == null) {
mOnDialogDismiss.run(null);
}
@ -94,16 +110,18 @@ public class DialogScanOrCreateLU {
}
private static RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
private RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
BarcodeManager.disable();
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(currentContext);
progressDialog.show();
if(UtilityBarcode.isEtichettaAnonima(data)) {
executeEtichettaAnonima(data, progressDialog);
if(UtilityBarcode.isEtichettaPosizione(data)){
this.executeEtichettaPosizione(data, progressDialog);
} else if(UtilityBarcode.isEtichettaAnonima(data)) {
this.executeEtichettaAnonima(data, progressDialog);
} else if(data.getType() == BarcodeType.EAN128) {
executeEAN128(data, progressDialog);
this.executeEAN128(data, progressDialog);
} else {
progressDialog.dismiss();
BarcodeManager.enable();
@ -112,8 +130,43 @@ public class DialogScanOrCreateLU {
};
private void executeEtichettaPosizione(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
private static void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
MtbDepoPosizione foundPosizione = Stream.of(SettingsManager.iDB().getAvailablePosizioni())
.filter(x -> x.getPosizione().equalsIgnoreCase(barcodeScanDTO.getStringValue()))
.single();
PosizioneRESTonsumer.getBancaliInPosizione(foundPosizione, mtbColtList -> {
if(mtbColtList == null || mtbColtList.size() == 0){
progressDialog.dismiss();
BarcodeManager.enable();
showNoULFound();
} else if (mtbColtList.size() == 1) {
ColliMagazzinoRESTConsumer.getByTestata(mtbColtList.get(0), true, false, mtbColt -> {
sendMtbColt(mtbColt, progressDialog);
}, ex -> {
UtilityExceptions.defaultException(currentContext, ex, progressDialog);
BarcodeManager.enable();
});
} else {
progressDialog.dismiss();
BarcodeManager.enable();
showTooMuchULFound();
}
}, ex -> {
UtilityExceptions.defaultException(currentContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void executeEtichettaAnonima(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
if(mtbColt == null) {
@ -143,7 +196,7 @@ public class DialogScanOrCreateLU {
}
private static void executeEAN128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
private void executeEAN128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
if(ean128Model != null && !UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
@ -183,11 +236,19 @@ public class DialogScanOrCreateLU {
}
private static void showNoULFound() {
private void showTooMuchULFound() {
DialogSimpleMessageHelper.makeWarningDialog(currentContext,
new SpannableString(currentContext.getResources().getText(R.string.too_much_lu_found_message)),
null, null).show();
}
private static void sendMtbColt(MtbColt mtbColtToSend, ProgressDialog progressDialog) {
private void showNoULFound() {
DialogSimpleMessageHelper.makeWarningDialog(currentContext,
new SpannableString(currentContext.getResources().getText(R.string.no_lu_found_message)),
null, null).show();
}
private void sendMtbColt(MtbColt mtbColtToSend, ProgressDialog progressDialog) {
currentMtbColt = mtbColtToSend;
progressDialog.dismiss();
currentAlert.dismiss();

View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="android.view.View" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="it.integry.integrywmsnative.core.utility.UtilityNumber" />
<variable
name="checkableMtbColr"
type="it.integry.integrywmsnative.core.model.CheckableMtbColr"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
app:checked="@{checkableMtbColr.checked}"/>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:onClick="@{() -> checkableMtbColr.toggleCheck()}">
<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">
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{checkableMtbColr.mtbColr.mtbAart.getCodMart()}"
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="2"
android:text="@{checkableMtbColr.mtbColr.mtbAart.descrizioneEstesa}"
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: ` + dtoModel.partitaMag}"
android:textSize="14sp"
android:visibility="@{UtilityString.isNullOrEmpty(dtoModel.partitaMag) ? 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">
<android.support.v7.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(checkableMtbColr.mtbColr.getQtaCol()) + `\n` + checkableMtbColr.mtbColr.getUntMis()}"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="280.45\nCONF" />
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
</layout>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="16dp">
<android.support.v7.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:text="@string/dialog_choose_arts_from_lista_art"
android:textStyle="normal"
android:textColor="@android:color/black"
android:layout_marginBottom="12dp"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/dialog_choose_arts_from_lista_art__main_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</android.support.v7.widget.CardView>
</layout>

View File

@ -37,29 +37,34 @@
</LinearLayout>
<android.support.v7.widget.AppCompatTextView
<LinearLayout
android:id="@+id/dialog_scan_or_create_lu__creation_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="12dp"
android:textSize="16sp"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:text="OPPURE"
tools:text="OPPURE"/>
android:orientation="vertical">
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="12dp"
android:textSize="16sp"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:text="OPPURE"
tools:text="OPPURE"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/create_new_lu_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="Crea nuova UL"
android:textStyle="bold"
android:textColor="@android:color/white"
android:backgroundTint="@color/blue_700"/>
<android.support.v7.widget.AppCompatButton
android:id="@+id/create_new_lu_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="Crea nuova UL"
android:textStyle="bold"
android:textColor="@android:color/white"
android:backgroundTint="@color/blue_700"/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="view"
type="it.integry.integrywmsnative.gest.versamento_merce.VersamentoMerceFragment" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.versamento_merce.viewmodel.VersamentoMerceViewModel" />
</data>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.versamento_merce.VersamentoMerceFragment"
android:padding="8dp"
android:background="@color/full_white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gray_detail_background_round8"
android:orientation="vertical"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:padding="16dp">
<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="Data creazione: "
android:textColor="@android:color/black"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewmodel.mtbColt.get().getDataColloHumanLong()}"
tools:text="22 ottobre 2018"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
</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="Preparato da "
android:textColor="@android:color/black"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewmodel.mtbColt.get().getPreparatoDa() != null ? viewmodel.mtbColt.get().getPreparatoDa() : `N/D`}"
tools:text="Vito Falagario"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="italic" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Posizione "
android:textColor="@android:color/black"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewmodel.mtbColt.get().getPosizione() != null ? viewmodel.mtbColt.get().getPosizione() : `N/D`}"
tools:text="A00F00C00L00"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
</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="Deposito "
android:textColor="@android:color/black"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewmodel.mtbColt.get().getCodMdep()}"
tools:text="10"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />
<!--<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4sp"
android:text="@{viewmodel.descrizioneDepo}"
tools:text="(Bari)"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />-->
</LinearLayout>
</LinearLayout>
</FrameLayout>
</layout>

View File

@ -17,7 +17,7 @@
<item
android:id="@+id/nav_manage"
android:icon="@drawable/ic_menu_manage"
android:title="Tools" />
android:title="Versamento Merce" />
</group>
<item android:title="Communicate">

View File

@ -13,6 +13,7 @@
<string name="accettazione_ordine_inevaso_title_multiple_order">Ordini di accettazione</string>
<string name="vendita_title_fragment">Spedizione</string>
<string name="rettifica_giacenze_fragment_title">Rettifica giacenze</string>
<string name="versamento_merce_fragment_title">Versamento merce</string>
<string name="error">Errore</string>
<string name="ops">Ops</string>
<string name="warning">Attenzione</string>
@ -135,6 +136,7 @@
<string name="dialog_vendita_filtro_avanzato">Filtro avanzato</string>
<string name="dialog_choose_art_from_lista_art">Seleziona un articolo</string>
<string name="dialog_choose_arts_from_lista_art">Seleziona gli articoli</string>
<string name="supplier">Fornitore</string>
<string name="cod_art_or_description">Cod art / Descrizione</string>
@ -147,6 +149,8 @@
<string name="vehicle">Automezzo</string>
<string name="no_items_found_message">Nessun articolo trovato</string>
<string name="no_lu_found_message">Nessuna UL trovata</string>
<string name="too_much_lu_found_message">E\' stata trovata più di una UL</string>
<string name="ask_print_message"><![CDATA[Si vuole procedere con la stampa dell\'etichetta?]]></string>
</resources>

View File

@ -22,6 +22,7 @@
<string name="accettazione_ordine_inevaso_title_multiple_order">Multiple acceptance orders</string>
<string name="vendita_title_fragment">Check out</string>
<string name="rettifica_giacenze_fragment_title">Inventory</string>
<string name="versamento_merce_fragment_title">Items placement</string>
<string name="error">Error</string>
<string name="ops">Ops</string>
<string name="warning">Warning</string>
@ -142,6 +143,7 @@
<string name="dialog_vendita_filtro_avanzato">Advanced filter</string>
<string name="dialog_choose_art_from_lista_art">Choose item</string>
<string name="dialog_choose_arts_from_lista_art">Choose items</string>
<string name="supplier">Supplier</string>
@ -156,6 +158,8 @@
<string name="vehicle">Vehicle</string>
<string name="no_items_found_message">No items found</string>
<string name="no_lu_found_message">No LU found</string>
<string name="too_much_lu_found_message">Multiple LU found</string>
<string name="ask_print_message">Do you want print the label?</string>
</resources>