|
|
|
|
@@ -24,13 +24,14 @@ import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
|
import it.integry.integrywmsnative.MainActivity;
|
|
|
|
|
import it.integry.integrywmsnative.R;
|
|
|
|
|
import it.integry.integrywmsnative.core.REST.CommonRESTException;
|
|
|
|
|
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.ISimpleOperationCallback;
|
|
|
|
|
import it.integry.integrywmsnative.core.REST.consumers.ISingleValueOperationCallback;
|
|
|
|
|
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
|
|
|
|
|
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
|
|
|
|
|
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
|
|
|
|
|
import it.integry.integrywmsnative.core.di.BindableBoolean;
|
|
|
|
|
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
|
|
|
|
@@ -43,6 +44,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.UtilityDate;
|
|
|
|
|
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
|
|
|
|
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
|
|
|
|
import it.integry.integrywmsnative.core.utility.UtilityNumber;
|
|
|
|
|
@@ -53,7 +56,6 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenz
|
|
|
|
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter;
|
|
|
|
|
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter;
|
|
|
|
|
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.ask_position_of_lu.DialogAskPositionOfLU;
|
|
|
|
|
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
|
|
|
|
|
@@ -160,15 +162,78 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
|
|
|
|
|
BarcodeManager.disable();
|
|
|
|
|
|
|
|
|
|
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
|
|
|
|
|
|
|
|
|
if(data.getType() == BarcodeType.EAN8 || data.getType() == BarcodeType.EAN13 || data.getType() == BarcodeType.UPCA){
|
|
|
|
|
searchArtInt(data.getStringValue());
|
|
|
|
|
searchArtInt(data.getStringValue(), progressDialog);
|
|
|
|
|
} else if(UtilityBarcode.isEtichetta128(data)) {
|
|
|
|
|
this.executeEtichettaEan128(data, progressDialog);
|
|
|
|
|
} else {
|
|
|
|
|
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 (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
|
|
|
|
|
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
|
|
|
|
|
}
|
|
|
|
|
this.loadBarcodeArticolo(barcodeProd, ean128Model, progressDialog);
|
|
|
|
|
} 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 loadBarcodeArticolo(String barcodeProd, Ean128Model ean128Model, ProgressDialog progressDialog) {
|
|
|
|
|
if(barcodeProd.length() == 14) {
|
|
|
|
|
// barcodeProd = UtilityBarcode.convertITF14toNeutral(barcodeProd);
|
|
|
|
|
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
|
|
|
|
|
|
|
|
|
|
if(mtbAartList != null && mtbAartList.size() > 0) {
|
|
|
|
|
|
|
|
|
|
this.dispatchArt(mtbAartList.get(0), ean128Model);
|
|
|
|
|
|
|
|
|
|
BarcodeManager.enable();
|
|
|
|
|
progressDialog.dismiss();
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
BarcodeManager.enable();
|
|
|
|
|
progressDialog.dismiss();
|
|
|
|
|
|
|
|
|
|
DialogSimpleMessageHelper.makeWarningDialog(mContext,
|
|
|
|
|
new SpannableString(mContext.getResources().getText(R.string.no_result_from_barcode)),
|
|
|
|
|
null, null)
|
|
|
|
|
.show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}, ex -> {
|
|
|
|
|
BarcodeManager.enable();
|
|
|
|
|
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setupSearchFornitori(ArrayList<FornitoreDTO> listaFornitori) {
|
|
|
|
|
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(mContext, listaFornitori);
|
|
|
|
|
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
|
|
|
|
|
@@ -205,7 +270,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString());
|
|
|
|
|
searchArtInt(mBinding.inputCodArtDescrInt.getText().toString(), UtilityProgress.createDefaultProgressDialog(mContext));
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
@@ -248,8 +313,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
}, ex -> UtilityExceptions.defaultException(mContext, ex, progressDialog));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void searchArtInt(String queryText) {
|
|
|
|
|
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
|
|
|
|
|
private void searchArtInt(String queryText, ProgressDialog progressDialog) {
|
|
|
|
|
//progressDialog.show();
|
|
|
|
|
|
|
|
|
|
mHelper.searchArtInt(queryText, listaArts -> {
|
|
|
|
|
@@ -269,9 +333,9 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
if(articoloFornitoreDTOS.size() == 0) {
|
|
|
|
|
showNoArtsFound();
|
|
|
|
|
} else if(articoloFornitoreDTOS.size() == 1) {
|
|
|
|
|
dispatchArt(articoloFornitoreDTOS.get(0));
|
|
|
|
|
dispatchArt(articoloFornitoreDTOS.get(0), null);
|
|
|
|
|
} else {
|
|
|
|
|
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, this::dispatchArt).show();
|
|
|
|
|
DialogChooseArtFromListaArts.make(mContext, articoloFornitoreDTOS, mtbAart -> this.dispatchArt(mtbAart, null)).show();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
showNoArtsFound();
|
|
|
|
|
@@ -285,7 +349,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void dispatchArt(MtbAart mtbAart){
|
|
|
|
|
private void dispatchArt(MtbAart mtbAart, Ean128Model ean128Model){
|
|
|
|
|
DialogInputQuantity.DTO qtaDto = new DialogInputQuantity.DTO();
|
|
|
|
|
|
|
|
|
|
qtaDto.setMtbAart(mtbAart);
|
|
|
|
|
@@ -301,6 +365,41 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|
|
|
|
qtaDto.setCanDataScadBeChanged(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(ean128Model != null){
|
|
|
|
|
if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
|
|
|
|
qtaDto.setBatchLot(ean128Model.BatchLot);
|
|
|
|
|
qtaDto.setCanPartitaMagBeChanged(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
|
|
|
|
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
|
|
|
|
qtaDto.setCanDataScadBeChanged(false);
|
|
|
|
|
} else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
|
|
|
|
qtaDto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
|
|
|
|
qtaDto.setCanDataScadBeChanged(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
UtilityLogger.errorMe(e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(ean128Model.Count != null && ean128Model.Count > 0) {
|
|
|
|
|
qtaDto.setNumCnf(ean128Model.Count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
|
|
|
|
qtaDto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
|
|
|
|
} else {
|
|
|
|
|
qtaDto.setQtaTot(qtaDto.getQtaCnf().multiply(new BigDecimal(qtaDto.getNumCnf())));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qtaDto.setShouldAskDataScad(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
|
|
|
|
onPostDispatch(mtbAart, quantityDTO);
|
|
|
|
|
}, null).show();
|
|
|
|
|
|