Prima implementazione del barcode reader in vendita
This commit is contained in:
@@ -209,19 +209,14 @@ public class MainActivity extends AppCompatActivity
|
||||
ServerStatusChecker.getIstance().addCallback(value -> {
|
||||
if(value && (!mIsOnline || firstCheckExecution)){
|
||||
|
||||
SettingsManager.reloadDBVariables(new ISimpleOperationCallback() {
|
||||
@Override
|
||||
public void onSuccess(Object value) {
|
||||
SettingsManager.reloadDBVariables(() -> {
|
||||
mIsOnline = true;
|
||||
firstCheckExecution = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
}, ex -> {
|
||||
//mNoConnectionLayout.expand(true);
|
||||
if(!mIsOnline) mIsOnline = false;
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
} else if(!value && mIsOnline){
|
||||
mIsOnline = false;
|
||||
|
||||
@@ -292,6 +292,10 @@ public class MtbColt extends EntityBase implements Parcelable {
|
||||
return gestione;
|
||||
}
|
||||
|
||||
public GestioneEnum getGestioneEnum() {
|
||||
return GestioneEnum.fromString(gestione);
|
||||
}
|
||||
|
||||
public MtbColt setGestione(String gestione) {
|
||||
this.gestione = gestione;
|
||||
return this;
|
||||
|
||||
@@ -9,6 +9,8 @@ public class DBSettingsModel {
|
||||
private List<String> availableProfiles = null;
|
||||
private List<AvailableCodMdepsDTO> availableCodMdep = null;
|
||||
|
||||
private boolean enableCheckPartitaMagCheckPickingV;
|
||||
|
||||
public List<String> getAvailableProfiles() {
|
||||
return availableProfiles;
|
||||
}
|
||||
@@ -24,4 +26,13 @@ public class DBSettingsModel {
|
||||
public void setAvailableCodMdep(List<AvailableCodMdepsDTO> availableCodMdep) {
|
||||
this.availableCodMdep = availableCodMdep;
|
||||
}
|
||||
|
||||
public boolean isEnableCheckPartitaMagCheckPickingV() {
|
||||
return enableCheckPartitaMagCheckPickingV;
|
||||
}
|
||||
|
||||
public DBSettingsModel setEnableCheckPartitaMagCheckPickingV(boolean enableCheckPartitaMagCheckPickingV) {
|
||||
this.enableCheckPartitaMagCheckPickingV = enableCheckPartitaMagCheckPickingV;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,11 @@ import android.content.Context;
|
||||
import java.util.List;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.GestSetupRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
|
||||
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
|
||||
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
|
||||
|
||||
public class SettingsManager {
|
||||
|
||||
@@ -62,37 +64,40 @@ public class SettingsManager {
|
||||
|
||||
|
||||
|
||||
public static void reloadDBVariables(final ISimpleOperationCallback callback){
|
||||
public static void reloadDBVariables(Runnable onComplete, RunnableArgs<Exception> onFailed){
|
||||
dbSettingsModelIstance = new DBSettingsModel();
|
||||
|
||||
loadAvailableProfiles(callback);
|
||||
loadAvailableProfiles(() ->
|
||||
loadAvailableCodMdeps(() ->
|
||||
loadGestSetupValues(onComplete, onFailed) ,onFailed), onFailed);
|
||||
}
|
||||
|
||||
private static void loadAvailableProfiles(final ISimpleOperationCallback callback){
|
||||
private static void loadAvailableProfiles(Runnable onComplete, RunnableArgs<Exception> onFailed){
|
||||
SystemRESTConsumer.getAvailableProfiles(new ISimpleOperationCallback<List<String>>() {
|
||||
@Override
|
||||
public void onSuccess(List<String> availableProfiles) {
|
||||
dbSettingsModelIstance.setAvailableProfiles(availableProfiles);
|
||||
|
||||
loadAvailableCodMdeps(callback);
|
||||
onComplete.run();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
//BOH
|
||||
if(callback != null) callback.onFailed(ex);
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void loadAvailableCodMdeps(final ISimpleOperationCallback callback) {
|
||||
private static void loadAvailableCodMdeps(Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
SystemRESTConsumer.getAvailableCodMdeps(new ISimpleOperationCallback<List<AvailableCodMdepsDTO>>() {
|
||||
@Override
|
||||
public void onSuccess(List<AvailableCodMdepsDTO> availableCodMdeps) {
|
||||
dbSettingsModelIstance.setAvailableCodMdep(availableCodMdeps);
|
||||
|
||||
if(availableCodMdeps == null || availableCodMdeps.size() == 0) {
|
||||
callback.onFailed(new Exception(mContext.getText(R.string.no_codmdep_available).toString()));
|
||||
onFailed.run(new Exception(mContext.getText(R.string.no_codmdep_available).toString()));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -112,15 +117,26 @@ public class SettingsManager {
|
||||
settingsModelIstance.userSession.depo = availableCodMdeps.get(0);
|
||||
}
|
||||
|
||||
if(callback != null) callback.onSuccess(null);
|
||||
if(onComplete != null) onComplete.run();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
//BOH
|
||||
if(callback != null) callback.onFailed(ex);
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private static void loadGestSetupValues(Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
GestSetupRESTConsumer.getBooleanValue("PICKING", "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", value -> {
|
||||
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(value);
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
}, ex -> {
|
||||
if(onFailed != null) onFailed.run(ex);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,8 +17,11 @@ public class UtilityExceptions {
|
||||
progressDialog.dismiss();
|
||||
defaultException(context, ex);
|
||||
}
|
||||
|
||||
public static void defaultException(Context context, Exception ex){
|
||||
defaultException(context, ex, false);
|
||||
}
|
||||
|
||||
public static void defaultException(Context context, Exception ex, boolean sendEmail){
|
||||
|
||||
Logger.e(ex, ex.getMessage());
|
||||
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
|
||||
@@ -26,7 +29,7 @@ public class UtilityExceptions {
|
||||
if(errorMessage == null) errorMessage = ex.getMessage();
|
||||
DialogSimpleMessageHelper.makeErrorDialog(context, new SpannableString(errorMessage), null, null).show();
|
||||
|
||||
UtilityLogger.errorMe(ex);
|
||||
if(sendEmail) UtilityLogger.errorMe(ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
|
||||
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(mAccettazioneOrdineInevasoViewModel.onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex)));
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -154,10 +154,6 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
|
||||
mActivity.bindings.filteredArtsInListExpandableLayout.expand(true);
|
||||
|
||||
mActivity.bindings.descriptionFilterText.setText(descriptionText);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void removeListFilter() {
|
||||
@@ -670,6 +666,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
|
||||
}
|
||||
}
|
||||
|
||||
removeListFilter();
|
||||
refreshOrderBy(true);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
|
||||
import it.integry.integrywmsnative.core.model.MtbAart;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityDate;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityLogger;
|
||||
@@ -38,6 +39,8 @@ public class PickingObjectDTO implements Parcelable {
|
||||
private MtbAart mtbAart;
|
||||
|
||||
private Boolean hidden = null;
|
||||
private Boolean tempHidden = null;
|
||||
private PickData tempPickData = null;
|
||||
|
||||
protected PickingObjectDTO(Parcel in) {
|
||||
if (in.readByte() == 0) {
|
||||
@@ -389,4 +392,33 @@ public class PickingObjectDTO implements Parcelable {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Boolean isTempHidden() {
|
||||
return tempHidden;
|
||||
}
|
||||
|
||||
public PickingObjectDTO setTempHidden(Boolean tempHidden) {
|
||||
this.tempHidden = tempHidden;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PickData getTempPickData() {
|
||||
return tempPickData;
|
||||
}
|
||||
|
||||
public PickingObjectDTO setTempPickData(PickData tempPickData) {
|
||||
this.tempPickData = tempPickData;
|
||||
return this;
|
||||
}
|
||||
|
||||
public class PickData {
|
||||
private String batchLot;
|
||||
private BigDecimal qtaDaEvadere;
|
||||
private BigDecimal qtaEvasa;
|
||||
private BigDecimal qtaOrd;
|
||||
private BigDecimal qtaTot;
|
||||
private BigDecimal qtaCnf;
|
||||
private Integer numCnf;
|
||||
private Date dataScad;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
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.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.databinding.ActivityVenditaOrdineInevasoBinding;
|
||||
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
|
||||
import it.integry.integrywmsnative.gest.lista_bancali.ListaBancaliActivity;
|
||||
@@ -30,6 +33,8 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
||||
|
||||
private static final int PICK_UL_REQUEST = 1; // The request code
|
||||
|
||||
private int barcodeScannerIstanceID = -1;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -49,6 +54,9 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
||||
setTitle(R.string.activity_vendita_inevaso_title);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(mVenditaOrdineInevasoViewModel.onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(this, ex, false)));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,7 +71,10 @@ public class VenditaOrdineInevasoActivity extends AppCompatActivity {
|
||||
mArticoliInColloBottomSheetViewModel.collapse();
|
||||
} else if(mVenditaOrdineInevasoViewModel.thereIsAnOpenedUL()) {
|
||||
mArticoliInColloBottomSheetViewModel.closeCurrentUL();
|
||||
} else super.onBackPressed();
|
||||
} else {
|
||||
BarcodeManager.removeCallback(barcodeScannerIstanceID);
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -138,7 +138,9 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter<Ma
|
||||
|
||||
final VenditaOrdineInevasoListViewModel.SubItem rowItem = subset.get(i);
|
||||
|
||||
if(!rowItem.getOriginalModel().isHidden()) {
|
||||
if(!rowItem.getOriginalModel().isHidden() &&
|
||||
(rowItem.getOriginalModel().isTempHidden() == null ||
|
||||
(rowItem.getOriginalModel().isTempHidden() != null && !rowItem.getOriginalModel().isTempHidden()))) {
|
||||
visibleElementsCounter++;
|
||||
|
||||
View groupModelViewPool = (View) sPool.acquire();
|
||||
@@ -183,9 +185,13 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter<Ma
|
||||
descrizione.setText(descrizioneString);
|
||||
descrizione.setTextColor(descrizioneColor);
|
||||
|
||||
final TextView subDescrizione = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_subdescrizione);
|
||||
if(rowItem.getSubDescrizione() != null) subDescrizione.setText(Html.fromHtml(rowItem.getSubDescrizione()));
|
||||
subDescrizione.setVisibility(UtilityString.isNullOrEmpty(rowItem.getSubDescrizione()) ? View.GONE : View.VISIBLE);
|
||||
final TextView subDescrizione1 = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_subdescrizione1);
|
||||
if(rowItem.getSubDescrizione1() != null) subDescrizione1.setText(Html.fromHtml(rowItem.getSubDescrizione1()));
|
||||
subDescrizione1.setVisibility(UtilityString.isNullOrEmpty(rowItem.getSubDescrizione1()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
final TextView subDescrizione2 = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_subdescrizione2);
|
||||
if(rowItem.getSubDescrizione2() != null) subDescrizione2.setText(Html.fromHtml(rowItem.getSubDescrizione2()));
|
||||
subDescrizione2.setVisibility(UtilityString.isNullOrEmpty(rowItem.getSubDescrizione2()) ? View.GONE : View.VISIBLE);
|
||||
|
||||
final TextView qtaEvasa = groupModelView.findViewById(R.id.vendita_ordine_inevaso_main_list_group_item_qta_evasa);
|
||||
qtaEvasa.setText(UtilityNumber.decimalToString(rowItem.getQtaRiservata()));
|
||||
@@ -196,6 +202,7 @@ public class MainListOrdineVenditaInevasoAdapter extends RecyclerView.Adapter<Ma
|
||||
|
||||
groupModelView.setOnClickListener(view -> {
|
||||
if (mOrdineRowDispatch != null) {
|
||||
rowItem.getOriginalModel().setTempEan128Model(null);
|
||||
mOrdineRowDispatch.onOrdineRowDispatch(rowItem.getOriginalModel());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -65,6 +65,8 @@ public class VenditaOrdineInevasoHelper {
|
||||
(tmpItem.getNumCollo() == null && tmpItem.getQtaOrd().floatValue() <= 0)) {
|
||||
tmpItem.setHidden(true);
|
||||
} else tmpItem.setHidden(false);
|
||||
|
||||
tmpItem.setTempHidden(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,8 +105,12 @@ public class VenditaOrdineInevasoHelper {
|
||||
|
||||
rowModel.setDescrizione(currentItem.getDescrizioneEstesa());
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(currentItem.getPartitaMag())) {
|
||||
rowModel.setSubDescrizione1(String.format(mContext.getResources().getText(R.string.batch_lot_text).toString(), currentItem.getPartitaMag()));
|
||||
}
|
||||
|
||||
if(currentItem.getNumCollo() != null) {
|
||||
rowModel.setSubDescrizione(String.format(mContext.getResources().getText(R.string.lu_number_text).toString(), currentItem.getNumCollo(), currentItem.getDataColloHuman()));
|
||||
rowModel.setSubDescrizione2(String.format(mContext.getResources().getText(R.string.lu_number_text).toString(), currentItem.getNumCollo(), currentItem.getDataColloHuman()));
|
||||
}
|
||||
|
||||
rowModel.setQtaRiservata(getRigaQuantityEvasa(currentItem, mtbColrs));
|
||||
|
||||
@@ -13,7 +13,8 @@ public class VenditaOrdineInevasoListViewModel {
|
||||
|
||||
public boolean isHidden(){
|
||||
if(rows == null || rows.size() == 0) return true;
|
||||
return Stream.of(rows).filter(x -> x.originalModel.isHidden() != null && !x.originalModel.isHidden()).count() == 0;
|
||||
return Stream.of(rows).filter(x -> (x.originalModel.isHidden() != null && !x.originalModel.isHidden()) &&
|
||||
(x.originalModel.isTempHidden() != null && !x.originalModel.isTempHidden())).count() == 0;
|
||||
}
|
||||
|
||||
public static class SubItem {
|
||||
@@ -22,7 +23,8 @@ public class VenditaOrdineInevasoListViewModel {
|
||||
private String badge2;
|
||||
|
||||
private String descrizione;
|
||||
private String subDescrizione;
|
||||
private String subDescrizione1;
|
||||
private String subDescrizione2;
|
||||
private BigDecimal qtaRiservata;
|
||||
private BigDecimal qtaOrdinata;
|
||||
|
||||
@@ -55,12 +57,21 @@ public class VenditaOrdineInevasoListViewModel {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSubDescrizione() {
|
||||
return subDescrizione;
|
||||
public String getSubDescrizione1() {
|
||||
return subDescrizione1;
|
||||
}
|
||||
|
||||
public SubItem setSubDescrizione(String subDescrizione) {
|
||||
this.subDescrizione = subDescrizione;
|
||||
public SubItem setSubDescrizione1(String subDescrizione1) {
|
||||
this.subDescrizione1 = subDescrizione1;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getSubDescrizione2() {
|
||||
return subDescrizione2;
|
||||
}
|
||||
|
||||
public SubItem setSubDescrizione2(String subDescrizione2) {
|
||||
this.subDescrizione2 = subDescrizione2;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,11 +12,17 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.core.CommonConst;
|
||||
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.PrinterRESTConsumer;
|
||||
import it.integry.integrywmsnative.core.REST.model.Ean128Model;
|
||||
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.FiltroOrdineDTO;
|
||||
import it.integry.integrywmsnative.core.model.MtbColr;
|
||||
@@ -24,7 +30,11 @@ import it.integry.integrywmsnative.core.model.MtbColt;
|
||||
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
||||
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.UtilityProgress;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityString;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaGroupedInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
|
||||
@@ -40,12 +50,14 @@ import it.integry.integrywmsnative.BR;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
|
||||
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;
|
||||
import it.integry.plugins.barcode_base_library.model.BarcodeType;
|
||||
|
||||
public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IOnOrdineVenditaRowDispatched {
|
||||
|
||||
public ObservableField<Boolean> isFabVisible = new ObservableField<>();
|
||||
|
||||
private final VenditaOrdineInevasoActivity mActivity;
|
||||
private VenditaOrdineInevasoActivity mActivity;
|
||||
private final ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
|
||||
|
||||
private final List<PickingObjectDTO> mPickingList;
|
||||
@@ -113,7 +125,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
|
||||
Stream.of(this.mTestateOrdini).forEach(x -> flatOrderArray.addAll(x.ordini));
|
||||
|
||||
|
||||
//Definizione della gestione collo di default
|
||||
List<GestioneEnum> foundGestioni = Stream.of(flatOrderArray)
|
||||
.map(OrdineVenditaGroupedInevasoDTO.Ordine::getGestioneEnum)
|
||||
@@ -205,9 +216,24 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
}
|
||||
}
|
||||
|
||||
public void recoverUL(MtbColt recoveredMtbColt){
|
||||
public void applyFilter(String descriptionText) {
|
||||
|
||||
// DialogSimpleMessageHelper.makeInfoDialog(mActivity, "Info", new SpannableString("La funzione di recupero UL non è completa"), null, null).show();
|
||||
mActivity.bindings.filteredArtsInListExpandableLayout.expand(true);
|
||||
|
||||
mActivity.bindings.descriptionFilterText.setText(descriptionText);
|
||||
}
|
||||
|
||||
public void removeListFilter() {
|
||||
for(int i = 0; i < mPickingList.size(); i++) {
|
||||
mPickingList.get(i).setTempHidden(false);
|
||||
// mPickingList.get(i).setTempEan128Model(null);
|
||||
}
|
||||
|
||||
refreshOrderBy(false);
|
||||
mActivity.bindings.filteredArtsInListExpandableLayout.collapse(true);
|
||||
}
|
||||
|
||||
public void recoverUL(MtbColt recoveredMtbColt){
|
||||
|
||||
for(int i = 0; i < recoveredMtbColt.getMtbColr().size(); i++){
|
||||
|
||||
@@ -233,12 +259,222 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
refreshOrderBy(false);
|
||||
}
|
||||
|
||||
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
|
||||
|
||||
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mActivity);
|
||||
progressDialog.show();
|
||||
|
||||
BarcodeManager.disable();
|
||||
|
||||
//Se non c'è una UL aperta
|
||||
if(!thereIsAnOpenedUL()){
|
||||
|
||||
//Se è un'etichetta anonima
|
||||
if(UtilityBarcode.isEtichettaAnonima(data)){
|
||||
//Se il collo non esiste allora lo creo associandolo a questa etichetta anonima
|
||||
//invece se esiste apro un collo nuovo e cerco gli articoli presenti nell'ul
|
||||
//dell'etichetta anonima
|
||||
this.executeEtichettaAnonimaNotOpenedLU(data, progressDialog);
|
||||
} else if(data.getType() == BarcodeType.EAN128) {
|
||||
|
||||
this.createNewUL(null, null, progressDialog, false, false, () -> {
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
});
|
||||
|
||||
}
|
||||
} else {
|
||||
if(UtilityBarcode.isEtichettaAnonima(data)){
|
||||
//Cerco gli articoli presenti nell'ul dell'etichetta anonima
|
||||
this.executeEtichettaLU(data.getStringValue(), null, progressDialog);
|
||||
} else if(data.getType() == BarcodeType.EAN128) {
|
||||
|
||||
this.executeEtichettaEan128(data, progressDialog);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private void executeEtichettaAnonimaNotOpenedLU(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
|
||||
ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
|
||||
|
||||
if(mtbColt == null) {
|
||||
this.createNewUL(
|
||||
UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO),
|
||||
CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog,
|
||||
true, true,
|
||||
null);
|
||||
} else {
|
||||
|
||||
this.createNewUL(
|
||||
null,
|
||||
null,
|
||||
progressDialog,
|
||||
false, false,
|
||||
() -> searchArtFromUL(mtbColt, progressDialog)
|
||||
);
|
||||
}
|
||||
BarcodeManager.enable();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mActivity, ex, progressDialog);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaLU(String SSCC, Ean128Model ean128Model, ProgressDialog progressDialog) {
|
||||
ColliMagazzinoRESTConsumer.getBySSCC(SSCC, true, false, mtbColt -> {
|
||||
|
||||
if(mtbColt != null) {
|
||||
searchArtFromUL(mtbColt, progressDialog);
|
||||
} else {
|
||||
progressDialog.dismiss();
|
||||
showNoArtFoundDialog();
|
||||
}
|
||||
|
||||
|
||||
BarcodeManager.enable();
|
||||
|
||||
}, ex -> {
|
||||
UtilityExceptions.defaultException(mActivity, 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, ean128Model, progressDialog);
|
||||
} else {
|
||||
|
||||
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
|
||||
barcodeProd = barcodeProd.substring(1, barcodeProd.length());
|
||||
}
|
||||
|
||||
// this.loadArticolo(barcodeProd, ean128Model, progressDialog);
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
|
||||
progressDialog.dismiss();
|
||||
BarcodeManager.enable();
|
||||
}
|
||||
}, ex-> {
|
||||
UtilityExceptions.defaultException(mActivity, ex, progressDialog);
|
||||
BarcodeManager.enable();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void executeEtichettaEan128Art(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void searchArtFromUL(MtbColt scannedUL, ProgressDialog progressDialog) {
|
||||
|
||||
final List<PickingObjectDTO> pickingList = mPickingList;
|
||||
|
||||
|
||||
List<PickingObjectDTO> matchPickingObject = Stream.of(pickingList)
|
||||
.filter(x -> Objects.equals(x.getNumCollo(), scannedUL.getNumCollo()) &&
|
||||
x.getDataColloS().equals(scannedUL.getDataColloS()) &&
|
||||
x.getSerCollo().equalsIgnoreCase(scannedUL.getSerCollo()) &&
|
||||
(scannedUL.getGestioneEnum() == GestioneEnum.ACQUISTO || scannedUL.getGestioneEnum() == GestioneEnum.LAVORAZIONE)).toList();
|
||||
|
||||
|
||||
//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) {
|
||||
List<String> listOfCodMartsInRowCollo = Stream.of(scannedUL.getMtbColr())
|
||||
.map(MtbColr::getCodMart)
|
||||
.withoutNulls()
|
||||
.toList();
|
||||
|
||||
matchPickingObject = Stream.of(pickingList)
|
||||
.filter(x -> x.getNumCollo() == null &&
|
||||
(listOfCodMartsInRowCollo.contains(x.getCodMart())))
|
||||
.toList();
|
||||
|
||||
if(SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV()) {
|
||||
for (int i = 0; i < matchPickingObject.size(); i++) {
|
||||
PickingObjectDTO tmpPickObj = matchPickingObject.get(i);
|
||||
|
||||
boolean anyMatch = Stream.of(scannedUL.getMtbColr())
|
||||
.anyMatch(x -> x.getCodMart().equalsIgnoreCase(tmpPickObj.getCodMart()) &&
|
||||
Objects.equals(x.getPartitaMag(), tmpPickObj.getPartitaMag()));
|
||||
|
||||
if(!anyMatch) {
|
||||
matchPickingObject.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.loadMatchedRows(matchPickingObject);
|
||||
|
||||
progressDialog.dismiss();
|
||||
BarcodeManager.enable();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void searchArtFromAnag() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void loadMatchedRows(List<PickingObjectDTO> matchedRows) {
|
||||
if(matchedRows == null || matchedRows.size() == 0) {
|
||||
showNoArtFoundDialog();
|
||||
} else if(matchedRows.size() == 1) {
|
||||
// matchedRows.get(0).setTempEan128Model(ean128Model);
|
||||
onOrdineRowDispatch(matchedRows.get(0));
|
||||
} else {
|
||||
for(int i = 0; i < mPickingList.size(); i++) {
|
||||
if(!matchedRows.contains(mPickingList.get(i))) {
|
||||
mPickingList.get(i).setTempHidden(true);
|
||||
// mPickingList.get(i).setTempEan128Model(ean128Model);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
applyFilter("COD: ");
|
||||
refreshOrderBy(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void showNoArtFoundDialog() {
|
||||
DialogSimpleMessageHelper.makeWarningDialog(mActivity,
|
||||
new SpannableString(mActivity.getResources().getText(R.string.no_result_from_barcode)),
|
||||
null, null).show();
|
||||
}
|
||||
|
||||
|
||||
public void createNewUL() {
|
||||
this.createNewUL(null, null, null, false, true, null);
|
||||
}
|
||||
|
||||
public void createNewUL(Integer customNumCollo, String customSerCollo, ProgressDialog progress, boolean disablePrint, boolean closeProgress, Runnable onComplete) {
|
||||
mActivity.bindings.venditaOrdineInevasoFab.close(true);
|
||||
|
||||
final ProgressDialog progress = ProgressDialog.show(mActivity, mActivity.getText(R.string.waiting),
|
||||
mActivity.getText(R.string.loading) + " ...", true);
|
||||
|
||||
if (progress == null){
|
||||
progress = UtilityProgress.createDefaultProgressDialog(mActivity);
|
||||
}
|
||||
progress.show();
|
||||
|
||||
MtbColt mtbColt = new MtbColt();
|
||||
@@ -254,17 +490,28 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setCodAnag(defaultCodAnagOfUL)
|
||||
.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
|
||||
|
||||
if(customNumCollo != null) {
|
||||
mtbColt.setNumCollo(customNumCollo);
|
||||
}
|
||||
|
||||
if(!UtilityString.isNullOrEmpty(customSerCollo)) {
|
||||
mtbColt.setSerCollo(customSerCollo);
|
||||
}
|
||||
|
||||
mtbColt.generaFiltroOrdineFromDTO(defaultFiltroOrdine);
|
||||
|
||||
ProgressDialog finalProgress = progress;
|
||||
ColliMagazzinoRESTConsumer.saveCollo(mtbColt, new ISimpleOperationCallback<MtbColt>() {
|
||||
@Override
|
||||
public void onSuccess(MtbColt value) {
|
||||
|
||||
value.setMtbColr(new ObservableArrayList<>());
|
||||
value
|
||||
.setDisablePrint(disablePrint)
|
||||
.setMtbColr(new ObservableArrayList<>());
|
||||
|
||||
setULToCurrentContext(value);
|
||||
|
||||
progress.dismiss();
|
||||
if(closeProgress) finalProgress.dismiss();
|
||||
|
||||
new StatusBarAlert.Builder(mActivity)
|
||||
.autoHide(true)
|
||||
@@ -274,11 +521,13 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.withAlertColor(R.color.mainGreen)
|
||||
.build();
|
||||
|
||||
if(onComplete != null) onComplete.run();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(Exception ex) {
|
||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||
UtilityExceptions.defaultException(mActivity, ex, finalProgress);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -451,6 +700,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
}
|
||||
}
|
||||
|
||||
removeListFilter();
|
||||
refreshOrderBy(true);
|
||||
|
||||
}
|
||||
@@ -487,6 +737,46 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setCanPartitaMagBeChanged(false)
|
||||
.setMaxQta(item.getQtaOrd());
|
||||
|
||||
// if(item.getTempEan128Model() != null){
|
||||
// Ean128Model ean128Model = item.getTempEan128Model();
|
||||
//
|
||||
// if(!UtilityString.isNullOrEmpty(ean128Model.BatchLot)) {
|
||||
// dto.setBatchLot(ean128Model.BatchLot);
|
||||
// }
|
||||
//
|
||||
// try {
|
||||
// if(!UtilityString.isNullOrEmpty(ean128Model.BestBefore)){
|
||||
// dto.setDataScad(UtilityDate.recognizeDate(ean128Model.BestBefore));
|
||||
// } else if(!UtilityString.isNullOrEmpty(ean128Model.Expiry)) {
|
||||
// dto.setDataScad(UtilityDate.recognizeDate(ean128Model.Expiry));
|
||||
// }
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// UtilityLogger.errorMe(e);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if(ean128Model.Count != null && ean128Model.Count > 0) {
|
||||
// //if(!UtilityString.isNullOrEmpty(ean128Model.Sscc)) {
|
||||
// dto.setNumCnf(ean128Model.Count);
|
||||
// //} else {
|
||||
// // dto.setQtaTot(new BigDecimal(ean128Model.Count));
|
||||
// //}
|
||||
// }
|
||||
//
|
||||
// if (ean128Model.NetWeightKg != null && ean128Model.NetWeightKg > 0) {
|
||||
// dto.setQtaTot(new BigDecimal(ean128Model.NetWeightKg));
|
||||
// }
|
||||
//
|
||||
// if(dto.getQtaTot() != null && dto.getQtaTot().floatValue() > 0 && dto.getNumCnf() != null && dto.getNumCnf() > 0) {
|
||||
// dto.setQtaCnf(dto.getQtaTot().divide(new BigDecimal(dto.getNumCnf())));
|
||||
// }
|
||||
//
|
||||
// dto.setCanPartitaMagBeChanged(false);
|
||||
// dto.setCanDataScadBeChanged(false);
|
||||
// dto.setShouldAskDataScad(true);
|
||||
// }
|
||||
|
||||
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show();
|
||||
}
|
||||
}
|
||||
@@ -537,7 +827,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
||||
.setMtbAart(item.getMtbAart());
|
||||
|
||||
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr().add(mtbColr);
|
||||
refreshOrderBy(false);
|
||||
removeListFilter();
|
||||
|
||||
new StatusBarAlert.Builder(mActivity)
|
||||
.autoHide(true)
|
||||
|
||||
@@ -333,7 +333,7 @@ public class DialogInputQuantity {
|
||||
|
||||
int barcodeIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
|
||||
.setOnScanSuccessfull(onScanSuccessfull)
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex)));
|
||||
.setOnScanFailed(ex -> UtilityExceptions.defaultException(context, ex, false)));
|
||||
|
||||
currentAlert.setOnDismissListener(dialog -> {
|
||||
BarcodeManager.removeCallback(barcodeIstanceID);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<layout>
|
||||
<layout xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
@@ -50,15 +50,75 @@
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/vendita_ordine_main_list"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbars="vertical"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:clipToPadding="false" />
|
||||
android:orientation="vertical"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<net.cachapa.expandablelayout.ExpandableLayout
|
||||
android:id="@+id/filtered_arts_in_list_expandable_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:el_duration="400"
|
||||
app:el_expanded="false">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_toLeftOf="@+id/remove_art_filter_list"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
android:text="@string/filtered_arts_in_list" />
|
||||
<TextView
|
||||
android:id="@+id/description_filter_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
tools:text="COD_ART_HERE"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<android.support.v7.widget.AppCompatButton
|
||||
android:id="@+id/remove_art_filter_list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:backgroundTint="@color/red_600"
|
||||
android:textColor="@android:color/white"
|
||||
android:onClick="@{() -> viewmodel.removeListFilter()}"
|
||||
android:text="@string/remove_filter_button"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</net.cachapa.expandablelayout.ExpandableLayout>
|
||||
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/vendita_ordine_main_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbars="vertical"
|
||||
android:clipToPadding="false"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
|
||||
@@ -97,7 +97,14 @@
|
||||
tools:text="DESCRIZIONE"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_subdescrizione"
|
||||
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_subdescrizione1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
tools:text="SUB DESCRIZIONE"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vendita_ordine_inevaso_main_list_group_item_subdescrizione2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="14sp"
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
<string name="to_dispatch">Da evadere</string>
|
||||
|
||||
<string name="batch_lot">Lotto</string>
|
||||
<string name="batch_lot_text"><![CDATA[Lotto: <b>%s</b>]]></string>
|
||||
<string name="expire_date">Data scad</string>
|
||||
<string name="num_pcks">Num cnf</string>
|
||||
<string name="qty_x_pck"><![CDATA[Qtà x cnf]]></string>
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
<string name="to_dispatch">To dispatch</string>
|
||||
|
||||
<string name="batch_lot">Batch lot</string>
|
||||
<string name="batch_lot_text"><![CDATA[Batch lot: <b>%s</b>]]></string>
|
||||
<string name="expire_date">Expire date</string>
|
||||
<string name="num_pcks">Pcks num</string>
|
||||
<string name="qty_x_pck">Qty x pck</string>
|
||||
|
||||
Reference in New Issue
Block a user