Implementate logiche di picking UL to UL in Versamento Merce
This commit is contained in:
parent
fc732b4397
commit
af815e87f9
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
@ -1,5 +1,6 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
|
||||
android {
|
||||
compileSdkVersion 27
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
@ -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{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
@ -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(){}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
|
||||
@ -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 &&
|
||||
|
||||
@ -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()));
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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>
|
||||
|
||||
139
app/src/main/res/layout/fragment_main_versamento_merce.xml
Normal file
139
app/src/main/res/layout/fragment_main_versamento_merce.xml
Normal 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>
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user