Fix ricerca per codMart e partitaMag in Spedizione

This commit is contained in:
Gius95 2019-01-07 16:11:11 +01:00
parent 8908ada740
commit df91f0e33c
12 changed files with 395 additions and 37 deletions

View File

@ -206,7 +206,6 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mActivity); ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mActivity);
progressDialog.show();
BarcodeManager.disable(); BarcodeManager.disable();

View File

@ -3,6 +3,9 @@ package it.integry.integrywmsnative.gest.picking_libero;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding; import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding;
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper;
import it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel; import it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel;
@ -16,6 +19,8 @@ public class PickingLiberoActivity extends AppCompatActivity {
private PickingLiberoHelper mHelper; private PickingLiberoHelper mHelper;
private PickingLiberoViewModel mViewModel; private PickingLiberoViewModel mViewModel;
private int barcodeScannerIstanceID = -1;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -30,6 +35,10 @@ public class PickingLiberoActivity extends AppCompatActivity {
setSupportActionBar(this.mBindings.toolbar); setSupportActionBar(this.mBindings.toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(mViewModel.onScanSuccessfull)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
} }
@Override @Override
@ -37,4 +46,12 @@ public class PickingLiberoActivity extends AppCompatActivity {
onBackPressed(); onBackPressed();
return true; return true;
} }
@Override
public void onBackPressed() {
mViewModel.onBackPressed();
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed();
}
} }

View File

@ -2,25 +2,48 @@ package it.integry.integrywmsnative.gest.picking_libero.viewmodel;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.text.SpannableString;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List;
import androidx.databinding.Observable; import androidx.databinding.Observable;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField; import androidx.databinding.ObservableField;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.REST.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback; import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
import it.integry.integrywmsnative.core.REST.model.Ean13PesoModel;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts; 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.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding; import it.integry.integrywmsnative.databinding.ActivityPickingLiberoBinding;
import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper; import it.integry.integrywmsnative.gest.picking_libero.core.PickingLiberoHelper;
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.ui.StatusBarAlert; import it.integry.integrywmsnative.ui.StatusBarAlert;
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.plugins.barcode_base_library.model.BarcodeScanDTO;
public class PickingLiberoViewModel { public class PickingLiberoViewModel {
@ -68,6 +91,238 @@ public class PickingLiberoViewModel {
(mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() == 0)); (mtbColt.get().getMtbColr() == null || mtbColt.get().getMtbColr().size() == 0));
} }
public void onBackPressed() {
if(thereIsAnOpenedUL.get()) {
this.closeLU();
}
}
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
BarcodeManager.disable();
if(UtilityBarcode.isEtichettaAnonima(data)){
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
this.executeEtichettaLU(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)) {
//Cerco tramite etichetta ean 128 (che può indicarmi una UL)
this.executeEtichettaEan128(data, progressDialog);
} else {
BarcodeManager.enable();
}
};
private void executeEtichettaLU(String sscc, ProgressDialog progressDialog) {
ColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColtScanned -> {
if(mtbColtScanned == null) {
showNoULFound(() -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
} else if((mtbColtScanned.getGestioneEnum() == GestioneEnum.ACQUISTO || mtbColtScanned.getGestioneEnum() == GestioneEnum.LAVORAZIONE) && mtbColtScanned.getSegno() > 0) {
pickMerceULtoUL(mtbColtScanned, mtbColt.get(), progressDialog);
} else {
showNoULFound(() -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
}, ex -> {
showNoULFound(() -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
});
}
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(() -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
showNoULFound(() -> {
BarcodeManager.enable();
progressDialog.dismiss();
});
}
}, ex-> {
UtilityExceptions.defaultException(mContext, ex, progressDialog);
BarcodeManager.enable();
});
}
private void pickMerceULtoUL(MtbColt sourceMtbColt, MtbColt destMtbColt, ProgressDialog progressDialog) {
List<MtbColr> mtbColrsToPick = Stream.of(sourceMtbColt.getMtbColr())
.filter(x -> x.getQtaCol().floatValue() > 0)
.toList();
DialogChooseArtsFromListaArts.make(mContext, mtbColrsToPick, pickedAarts -> {
progressDialog.dismiss();
List<MtbColr> destNewMtbColr = new ArrayList<>();
askQuantities(pickedAarts.iterator(), destNewMtbColr, () -> {
if(destNewMtbColr != null && destNewMtbColr.size() > 0){
MtbColt clonedTestata = (MtbColt) destMtbColt.clone();
ObservableArrayList<MtbColr> mtbColrObservableField = new ObservableArrayList<>();
for(int i = 0; i < destNewMtbColr.size(); i++) {
MtbColr cloneMtbColr = (MtbColr) destNewMtbColr.get(i).clone();
cloneMtbColr
.setGestioneRif(cloneMtbColr.getGestione())
.setGestione(null);
cloneMtbColr
.setSerColloRif(cloneMtbColr.getSerCollo())
.setSerCollo(null);
cloneMtbColr
.setNumColloRif(cloneMtbColr.getNumCollo())
.setNumCollo(null);
cloneMtbColr
.setDataColloRif(cloneMtbColr.getDataColloS())
.setDataCollo(null);
mtbColrObservableField.add(cloneMtbColr);
}
clonedTestata.setMtbColr(mtbColrObservableField);
saveLU(clonedTestata);
}
});
}, () -> {
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, quantityDTO -> {
mtbColr
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
.setNumCnf(new BigDecimal(quantityDTO.numCnf.get()))
.setDatetimeRow(new Date());
onComplete.run(mtbColr);
}).show();
}
private void saveLU(MtbColt mtbColtToSave) {
mtbColtToSave.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
for(int i = 0; i < mtbColtToSave.getMtbColr().size(); i++) {
mtbColtToSave.getMtbColr().get(i).setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
}
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
ColliMagazzinoRESTConsumer.saveCollo(mtbColtToSave, value -> {
mtbColt.get().getMtbColr().addAll(mtbColtToSave.getMtbColr());
for(int i = 0; i < mtbColt.get().getMtbColr().size(); i++) {
mtbColt.get().getMtbColr().get(i).setOperation(CommonModelConsts.OPERATION.NO_OP);
}
progressDialog.dismiss();
BarcodeManager.enable();
}, ex -> {
BarcodeManager.enable();
UtilityExceptions.defaultException(mContext, ex, progressDialog);
});
}
private void showDataSavedDialog() {
DialogSimpleMessageHelper.makeSuccessDialog(
mContext,
mContext.getResources().getString(R.string.completed),
new SpannableString(mContext.getResources().getString(R.string.data_saved)),
null, null).show();
}
private void showNoULFound(Runnable onComplete) {
DialogSimpleMessageHelper.makeWarningDialog(mContext,
new SpannableString(mContext.getResources().getText(R.string.no_lu_found_message)),
null, onComplete).show();
}
public void createNewLU() { public void createNewLU() {
createNewLU(null, null, null); createNewLU(null, null, null);
} }
@ -79,7 +334,6 @@ public class PickingLiberoViewModel {
MtbColt mtbColt = new MtbColt(); MtbColt mtbColt = new MtbColt();
mtbColt .setGestione(GestioneEnum.VENDITA) mtbColt .setGestione(GestioneEnum.VENDITA)
.setSegno(-1) .setSegno(-1)
//.setCodAnag(defaultCodAnagOfUL)
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE); .setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
if(customNumCollo != null) { if(customNumCollo != null) {
@ -159,17 +413,4 @@ public class PickingLiberoViewModel {
); );
} }
/*public boolean thereIsAnOpenedUL() {
return this.mtbColt.get() != null;
}
public boolean thereIsAnyRowInUL() {
return this.mtbColt.get() != null &&
this.mtbColt.get().getMtbColr() != null &&
this.mtbColt.get().getMtbColr().size() > 0;
}
public boolean thereIsAnULWithoutRows() {
return thereIsAnOpenedUL() && !thereIsAnyRowInUL();
}
*/
} }

View File

@ -6,10 +6,14 @@ import android.os.Parcelable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import it.integry.integrywmsnative.core.REST.model.Ean128Model; import it.integry.integrywmsnative.core.REST.model.Ean128Model;
import it.integry.integrywmsnative.core.model.MtbAart; 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.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
@ -43,6 +47,8 @@ public class PickingObjectDTO implements Parcelable {
private Boolean tempHidden = null; private Boolean tempHidden = null;
private PickData tempPickData = null; private PickData tempPickData = null;
private List<MtbColr> withdrawRows = new ArrayList<>();
protected PickingObjectDTO(Parcel in) { protected PickingObjectDTO(Parcel in) {
if (in.readByte() == 0) { if (in.readByte() == 0) {
numCollo = null; numCollo = null;
@ -417,12 +423,22 @@ public class PickingObjectDTO implements Parcelable {
return this; return this;
} }
public List<MtbColr> getWithdrawRows() {
return withdrawRows;
}
public PickingObjectDTO setWithdrawRows(List<MtbColr> withdrawRows) {
this.withdrawRows = withdrawRows;
return this;
}
public static class PickData { public static class PickData {
private String batchLot; private String batchLot;
private BigDecimal qtaTot; private BigDecimal qtaTot;
private BigDecimal qtaCnf; private BigDecimal qtaCnf;
private BigDecimal numCnf; private BigDecimal numCnf;
private Date dataScad; private Date dataScad;
private MtbColt sourceMtbColt;
public String getBatchLot() { public String getBatchLot() {
@ -470,7 +486,14 @@ public class PickingObjectDTO implements Parcelable {
return this; return this;
} }
public MtbColt getSourceMtbColt() {
return sourceMtbColt;
}
public PickData setSourceMtbColt(MtbColt sourceMtbColt) {
this.sourceMtbColt = sourceMtbColt;
return this;
}
public static PickData fromEan128(Ean128Model ean128Model) { public static PickData fromEan128(Ean128Model ean128Model) {
PickingObjectDTO.PickData pickData = null; PickingObjectDTO.PickData pickData = null;

View File

@ -133,13 +133,14 @@ public class VenditaOrdineInevasoHelper {
if(mtbColrs != null) { if(mtbColrs != null) {
List<MtbColr> filteredMtbColrs = Stream.of(mtbColrs).filter(
x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()) &&
((x.getCodJcom() == null && item.getCodJcom() == null) || (x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.getCodJcom()))) &&
(!SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() || (SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() && ((x.getPartitaMag() == null && item.getPartitaMag() == null) || (x.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(item.getPartitaMag()))))) &&
((x.getNumColloRif() == null && item.getNumCollo() == null) || (x.getNumColloRif() != null && x.getNumColloRif().equals(item.getNumCollo())))).toList();
for (MtbColr mtbColr : filteredMtbColrs) { // List<MtbColr> filteredMtbColrs = Stream.of(mtbColrs).filter(
// x -> x.getCodMart().equalsIgnoreCase(item.getCodMart()) &&
// ((x.getCodJcom() == null && item.getCodJcom() == null) || (x.getCodJcom() != null && x.getCodJcom().equalsIgnoreCase(item.getCodJcom()))) &&
// (!SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() || (SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() && ((x.getPartitaMag() == null && item.getPartitaMag() == null) || (x.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(item.getPartitaMag()))))) &&
// ((x.getNumColloRif() == null && item.getNumCollo() == null) || (x.getNumColloRif() != null && x.getNumColloRif().equals(item.getNumCollo())))).toList();
for (MtbColr mtbColr : item.getWithdrawRows()) {
currentQtaEvasa = currentQtaEvasa.add(mtbColr.getQtaCol()); currentQtaEvasa = currentQtaEvasa.add(mtbColr.getQtaCol());
} }
} }

View File

@ -235,7 +235,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
for(int i = 0; i < recoveredMtbColt.getMtbColr().size(); i++){ for(int i = 0; i < recoveredMtbColt.getMtbColr().size(); i++){
MtbColr currentMtbColr = recoveredMtbColt.getMtbColr().get(i); // MtbColr currentMtbColr = recoveredMtbColt.getMtbColr().get(i);
// List<OrdineAccettazioneDTO.Riga> foundRows = Stream.of(groupedOrdini) // List<OrdineAccettazioneDTO.Riga> foundRows = Stream.of(groupedOrdini)
// .filter(x -> x.getNumOrd() == currentMtbColr.getNumOrd() && // .filter(x -> x.getNumOrd() == currentMtbColr.getNumOrd() &&
@ -438,20 +438,21 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
//Cerco se devo fare pick dell'articolo tramite codMart perché forse non risulta in nessun collo //Cerco se devo fare pick dell'articolo tramite codMart perché forse non risulta in nessun collo
if(matchPickingObject != null && matchPickingObject.size() == 0 && scannedUL.getMtbColr() != null && scannedUL.getMtbColr().size() > 0) { //if(matchPickingObject != null && matchPickingObject.size() == 0 && scannedUL.getMtbColr() != null && scannedUL.getMtbColr().size() > 0) {
List<String> listOfCodMartsInRowCollo = Stream.of(scannedUL.getMtbColr()) List<String> listOfCodMartsInRowCollo = Stream.of(scannedUL.getMtbColr())
.map(MtbColr::getCodMart) .map(MtbColr::getCodMart)
.withoutNulls() .withoutNulls()
.toList(); .toList();
matchPickingObject = Stream.of(pickingList) List<PickingObjectDTO> matchPickingObjectByArt = Stream.of(pickingList)
.filter(x -> x.getNumCollo() == null && .filter(x -> //x.getNumCollo() == null &&
(listOfCodMartsInRowCollo.contains(x.getCodMart()))) (listOfCodMartsInRowCollo.contains(x.getCodMart())))
.toList(); .toList();
if(SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) { if(SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) {
for (int i = 0; i < matchPickingObject.size(); i++) { for (int i = 0; i < matchPickingObjectByArt.size(); i++) {
PickingObjectDTO tmpPickObj = matchPickingObject.get(i); PickingObjectDTO tmpPickObj = matchPickingObjectByArt.get(i);
@ -462,7 +463,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
boolean anyMatch = matchWithPartitaMag.size() > 0; boolean anyMatch = matchWithPartitaMag.size() > 0;
if(!anyMatch) { if(!anyMatch) {
matchPickingObject.remove(i); matchPickingObjectByArt.remove(i);
i--; i--;
} else if(matchWithPartitaMag.size() == 1){ } else if(matchWithPartitaMag.size() == 1){
MtbColr matchRow = matchWithPartitaMag.get(0); MtbColr matchRow = matchWithPartitaMag.get(0);
@ -472,15 +473,17 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setDataScad(matchRow.getDataScadPartitaD()) .setDataScad(matchRow.getDataScadPartitaD())
.setNumCnf(matchRow.getNumCnf()) .setNumCnf(matchRow.getNumCnf())
.setQtaCnf(matchRow.getQtaCnf()) .setQtaCnf(matchRow.getQtaCnf())
.setQtaTot(matchRow.getQtaCol()); .setQtaTot(matchRow.getQtaCol())
.setSourceMtbColt(scannedUL);
tmpPickObj.setTempPickData(pickData); tmpPickObj.setTempPickData(pickData);
} }
} }
} else {
for (int i = 0; i < matchPickingObject.size(); i++) {
PickingObjectDTO tmpPickObj = matchPickingObject.get(i); } else {
for (int i = 0; i < matchPickingObjectByArt.size(); i++) {
PickingObjectDTO tmpPickObj = matchPickingObjectByArt.get(i);
List<MtbColr> matchWithColloRow = Stream.of(scannedUL.getMtbColr()) List<MtbColr> matchWithColloRow = Stream.of(scannedUL.getMtbColr())
.filter(x -> x.getCodMart().equalsIgnoreCase(tmpPickObj.getCodMart())).toList(); .filter(x -> x.getCodMart().equalsIgnoreCase(tmpPickObj.getCodMart())).toList();
@ -492,7 +495,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setDataScad(matchRow.getDataScadPartitaD()) .setDataScad(matchRow.getDataScadPartitaD())
.setNumCnf(matchRow.getNumCnf()) .setNumCnf(matchRow.getNumCnf())
.setQtaCnf(matchRow.getQtaCnf()) .setQtaCnf(matchRow.getQtaCnf())
.setQtaTot(matchRow.getQtaCol()); .setQtaTot(matchRow.getQtaCol())
.setSourceMtbColt(scannedUL);
tmpPickObj.setTempPickData(pickData); tmpPickObj.setTempPickData(pickData);
} }
@ -501,7 +505,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
} }
}
//}
matchPickingObject.addAll(matchPickingObjectByArt);
this.loadMatchedRows(matchPickingObject); this.loadMatchedRows(matchPickingObject);
@ -913,7 +920,16 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setDescrizione(item.getDescrizioneEstesa()) .setDescrizione(item.getDescrizioneEstesa())
.setDatetimeRow(new Date()); .setDatetimeRow(new Date());
if(item.getNumCollo() != null) { if(item.getTempPickData() != null && item.getTempPickData().getSourceMtbColt() != null) {
MtbColt sourceMtbColt = item.getTempPickData().getSourceMtbColt();
mtbColr
.setCodJcom(UtilityString.empty2null(item.getCodJcom()))
.setSerColloRif(UtilityString.empty2null(sourceMtbColt.getSerCollo()))
.setNumColloRif(sourceMtbColt.getNumCollo())
.setGestioneRif(UtilityString.empty2null(sourceMtbColt.getGestione()))
.setDataColloRif(UtilityString.empty2null(sourceMtbColt.getDataColloS()));
} else if(item.getNumCollo() != null) {
mtbColr mtbColr
.setCodJcom(UtilityString.empty2null(item.getCodJcom())) .setCodJcom(UtilityString.empty2null(item.getCodJcom()))
.setSerColloRif(UtilityString.empty2null(item.getSerCollo())) .setSerColloRif(UtilityString.empty2null(item.getSerCollo()))
@ -945,6 +961,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
.setUntMis(item.getMtbAart().getUntMis()) .setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart()); .setMtbAart(item.getMtbAart());
item.getWithdrawRows().add(mtbColr);
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr); mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr);
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei //Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei

View File

@ -109,6 +109,7 @@ public class DialogSimpleMessageHelper {
.setCustomTitle(titleView) .setCustomTitle(titleView)
.setView(contentView) .setView(contentView)
// .setMessage(messageText) // .setMessage(messageText)
.setCancelable(false)
.setPositiveButton(mContext.getText(R.string.ok), (dialog, which) -> { .setPositiveButton(mContext.getText(R.string.ok), (dialog, which) -> {
if(onPositiveClick != null) onPositiveClick.run(); if(onPositiveClick != null) onPositiveClick.run();
}); });

View File

@ -7,6 +7,8 @@
<import type="android.view.View"/> <import type="android.view.View"/>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel" /> type="it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel" />
@ -38,6 +40,49 @@
</it.integry.plugins.waterfalltoolbar.WaterfallToolbar> </it.integry.plugins.waterfalltoolbar.WaterfallToolbar>
<net.cachapa.expandablelayout.ExpandableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
app:el_expanded_bind="@{viewmodel.thereIsAnOpenedUL}">
<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:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="16sp"
android:textColor="@android:color/white"
android:textStyle="bold"
android:background="@drawable/badge1_round_corner"
android:text="@{viewmodel.mtbColt.get().numCollo.toString()}"
tools:text="2156"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:textSize="16sp"
android:textColor="@android:color/black"
android:textStyle="bold"
android:visibility="@{!UtilityString.isNullOrEmpty(viewmodel.mtbColt.get().posizione) ? View.VISIBLE : View.GONE}"
android:text="@{viewmodel.mtbColt.get().posizione}"
tools:text="ME1FS032"/>
</LinearLayout>
</net.cachapa.expandablelayout.ExpandableLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">

View File

@ -50,7 +50,7 @@
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="14sp" android:textSize="14sp"
android:textStyle="bold" android:textStyle="bold"
android:visibility="@{UtilityString.isNullOrEmpty(mtbAart.diacod) ? View.INVISIBLE : View.VISIBLE}" android:visibility="@{UtilityString.isNullOrEmpty(mtbAart.diacod) ? View.GONE : View.VISIBLE}"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
tools:text="DIACOD"/> tools:text="DIACOD"/>
</RelativeLayout> </RelativeLayout>

View File

@ -53,7 +53,18 @@
tools:text="COD MART" /> tools:text="COD MART" />
<TextView <androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{checkableMtbColr.mtbColr.mtbAart.getDiacod()}"
android:textColor="@color/red_600"
android:textSize="14sp"
android:textStyle="bold"
android:visibility="@{UtilityString.isNullOrEmpty(checkableMtbColr.mtbColr.mtbAart.diacod) ? View.GONE : View.VISIBLE}"
tools:text="DIACOD" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"

View File

@ -132,6 +132,7 @@
<string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string> <string name="already_used_anonymous_barcode"><![CDATA[L\'etichetta scansionata è stata già utilizzata]]></string>
<string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string> <string name="no_result_from_barcode">Il barcode scansionato non ha fornito alcun risultato</string>
<string name="multiple_results_from_barcode">Il barcode scansionato ha fornito multipli risultati</string>
<string name="filtered_arts_in_list">Filtro articoli applicato</string> <string name="filtered_arts_in_list">Filtro articoli applicato</string>
<string name="remove_filter_button">Rimuovi filtro</string> <string name="remove_filter_button">Rimuovi filtro</string>

View File

@ -142,6 +142,7 @@
<string name="already_used_anonymous_barcode">The scanned label has already been used</string> <string name="already_used_anonymous_barcode">The scanned label has already been used</string>
<string name="no_result_from_barcode">The scanned barcode did not produce any results</string> <string name="no_result_from_barcode">The scanned barcode did not produce any results</string>
<string name="multiple_results_from_barcode">The scanned barcode produced multiple results</string>
<string name="filtered_arts_in_list">Item filter applied</string> <string name="filtered_arts_in_list">Item filter applied</string>
<string name="remove_filter_button">Remove filter</string> <string name="remove_filter_button">Remove filter</string>