Prima implementazione azioni rapide nel Menu principale

This commit is contained in:
2019-01-14 20:17:22 +01:00
parent e0eb57c459
commit d8171f3f74
20 changed files with 435 additions and 89 deletions

View File

@@ -1,6 +1,8 @@
package it.integry.integrywmsnative;
import android.content.Intent;
import androidx.annotation.IdRes;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
@@ -22,7 +24,6 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.interfaces.IFilterableFragment;
import it.integry.integrywmsnative.core.interfaces.IRecyclerFragment;
import it.integry.integrywmsnative.core.interfaces.ISelectAllFragment;
@@ -102,19 +103,11 @@ public class MainActivity extends AppCompatActivity
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
public void setItem(@IdRes int menuId) {
mBinding.navView.setCheckedItem(menuId);
onNavigationItemSelected(mBinding.navView.getMenu().findItem(menuId));
//noinspection SimplifiableIfStatement
// if (id == R.id.action_search) {
// return true;
// }
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@@ -128,25 +121,21 @@ public class MainActivity extends AppCompatActivity
Fragment fragment = null;
int id = item.getItemId();
if (id == R.id.nav_accettazione) {
if (id == R.id.nav_home) {
this.popToMain();
} else if (id == R.id.nav_accettazione) {
fragment = MainAccettazioneFragment.newInstance();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_gallery) {
} else if (id == R.id.nav_spedizione) {
fragment = MainVenditaFragment.newInstance();
this.adaptViewToFragment(fragment);
} else if (id == R.id.nav_slideshow) {
} else if (id == R.id.nav_rettifica_giacenze) {
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) {
}*/
else if(id == R.id.nav_settings){
fragment = new MainSettingsFragment();

View File

@@ -134,16 +134,9 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
mtbColtToCreate.setSerCollo(customSerCollo);
}
Calendar calendar = Calendar.getInstance();
int currentYear = calendar.get(Calendar.YEAR);
String fullYear = "20" + UtilityBarcode.getAnnoColloFromULAnonima(barcode);
if(!fullYear.equalsIgnoreCase("" + currentYear)){
if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcode)) {
onFailed.run(new Exception("Per continuare scansiona un'etichetta dell'anno corrente"));
return;
}
mtbColtToCreate

View File

@@ -9,6 +9,8 @@ import it.integry.integrywmsnative.core.REST.model.ServiceRESTResponse;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityServer;
import it.integry.integrywmsnative.core.utility.UtilityString;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -88,6 +90,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if(UtilityString.isNullOrEmpty(printerName)) {
onFailed.run(new Exception("Nessuna stampante configurata: valore null"));
return;
}
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.printCollo(
printerName,

View File

@@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.utility;
import com.annimon.stream.Stream;
import java.util.Calendar;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
@@ -13,6 +15,14 @@ public class UtilityBarcode {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.CODE128 && barcodeScanDTO.getStringValue().startsWith("U");
}
public static boolean isEtichettaAnonimaOfCurrentYear(String barcode) {
Calendar calendar = Calendar.getInstance();
int currentYear = calendar.get(Calendar.YEAR);
String fullYear = "20" + UtilityBarcode.getAnnoColloFromULAnonima(barcode);
return fullYear.equalsIgnoreCase("" + currentYear);
}
public static boolean isEtichetta128(BarcodeScanDTO barcodeScanDTO){
return barcodeScanDTO != null && (barcodeScanDTO.getType() == BarcodeType.CODE128 || barcodeScanDTO.getType() == BarcodeType.EAN128);
}

View File

@@ -19,6 +19,11 @@ public class UtilityExceptions {
progressDialog.dismiss();
defaultException(context, ex);
}
public static void defaultException(Context context, Exception ex, ProgressDialog progressDialog, boolean sendMail){
progressDialog.dismiss();
defaultException(context, ex, sendMail);
}
public static void defaultException(Context context, Exception ex){
defaultException(context, ex, false);
}

View File

@@ -33,19 +33,19 @@ public class WiFiCheckerViewHolder implements ISingleValueOperationCallback<WiFi
public void onResult(WiFiStatusChecker.SIGNAL value) {
switch (value){
case EXCELLENT:
mWifiSignalTextView.setText("EXCELLENT");
mWifiSignalTextView.setText("ECCELLENTE");
break;
case GOOD:
mWifiSignalTextView.setText("GOOD");
mWifiSignalTextView.setText("BUONO");
break;
case FAIR:
mWifiSignalTextView.setText("FAIR");
mWifiSignalTextView.setText("SUFFICIENTE");
break;
case WEAK:
mWifiSignalTextView.setText("WEAK");
mWifiSignalTextView.setText("SCARSO");
break;
case NONE:
mWifiSignalTextView.setText("NONE");
mWifiSignalTextView.setText("NESSUNO");
break;
}
}

View File

@@ -226,8 +226,13 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), false, false, mtbColt -> {
if(mtbColt == null) {
this.createNewUL(UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, true, null);
BarcodeManager.enable();
if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) {
UtilityExceptions.defaultException(mActivity, new Exception("Per continuare scansiona un'etichetta dell'anno corrente"), progressDialog, false);
BarcodeManager.enable();
} else {
this.createNewUL(UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()), CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog, true, null);
BarcodeManager.enable();
}
} else {
progressDialog.dismiss();
BarcodeManager.enable();

View File

@@ -13,6 +13,8 @@ import net.cachapa.expandablelayout.ExpandableLayout;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import it.integry.integrywmsnative.MainActivity;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
@@ -97,4 +99,15 @@ public class MainFragment extends Fragment implements ITitledFragment {
public String getTitle(Context context) {
return context.getString(R.string.app_name);
}
@OnClick(R.id.fast_button_accettazione)
public void onClickAccettazione(View view) {
((MainActivity) getActivity()).setItem(R.id.nav_accettazione);
}
@OnClick(R.id.fast_button_spedizione)
public void onClickSpedizione(View view) {
((MainActivity) getActivity()).setItem(R.id.nav_spedizione);
}
}

View File

@@ -12,6 +12,7 @@ import java.util.ArrayList;
import java.util.List;
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.barcode_reader.BarcodeManager;
@@ -60,7 +61,9 @@ public class VenditaViewModel {
BarcodeManager.disable();
final ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(mContext);
if(UtilityBarcode.isEtichetta128(data)){
if(UtilityBarcode.isEtichettaAnonima(data)) {
this.executeEtichettaLU(data.getStringValue(), progressDialog);
} else if(UtilityBarcode.isEtichetta128(data)){
this.executeEtichettaEan128(data, progressDialog);
} else {
progressDialog.dismiss();
@@ -69,8 +72,6 @@ public class VenditaViewModel {
};
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, ProgressDialog progressDialog) {
BarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {

View File

@@ -47,7 +47,9 @@ import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCal
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
import it.integry.integrywmsnative.BR;
import it.integry.integrywmsnative.view.dialogs.DialogAskLivelloPosizione;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
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;
@@ -342,11 +344,18 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
ColliMagazzinoRESTConsumer.getBySSCC(barcodeScanDTO.getStringValue(), true, false, mtbColt -> {
if(mtbColt == null) {
this.createNewUL(
UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()),
CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog,
true, true,
null);
if(!UtilityBarcode.isEtichettaAnonimaOfCurrentYear(barcodeScanDTO.getStringValue())) {
UtilityExceptions.defaultException(mActivity, new Exception("Per continuare scansiona un'etichetta dell'anno corrente"), progressDialog, false);
BarcodeManager.enable();
} else {
this.createNewUL(
UtilityBarcode.getNumColloFromULAnonima(barcodeScanDTO.getStringValue()),
CommonConst.Config.DEFAULT_ANONYMOUS_UL_SERIE, progressDialog,
true, true,
null);
}
} else {
this.createNewUL(
@@ -733,56 +742,63 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
}
private void printCollo(ProgressDialog progress) {
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
if(shouldPrint) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
if(value.size() > 0) {
try{
MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
if (value.size() > 0) {
try {
MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> {
ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> {
PrinterRESTConsumer.printCollo(
value.get(0),
currentMtbColt,
1, reportName, () -> {
PrinterRESTConsumer.printCollo(
value.get(0),
currentMtbColt,
1, reportName, () -> {
postCloseOperations();
progress.dismiss();
postCloseOperations();
progress.dismiss();
}, ex -> {
}, ex -> {
progress.dismiss();
String errorMessage = ex.getMessage();
DialogSimpleMessageHelper.makeErrorDialog(
mActivity,
new SpannableString(errorMessage),
null,
null,
R.string.button_ignore_print,
() -> postCloseOperations()).show();
});
progress.dismiss();
String errorMessage = ex.getMessage();
DialogSimpleMessageHelper.makeErrorDialog(
mActivity,
new SpannableString(errorMessage),
null,
null,
R.string.button_ignore_print,
() -> postCloseOperations()).show();
});
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)
);
} catch (Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
postCloseOperations();
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)
);
} catch (Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
postCloseOperations();
}
} else {
progress.dismiss();
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show();
}
}
} else {
progress.dismiss();
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show();
}
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
} else {
postCloseOperations();
progress.dismiss();
}
});
}).show();
}
private void deleteCollo(ProgressDialog progress) {
@@ -800,6 +816,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
public boolean thereIsAnOpenedUL() {
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null;
}
public boolean thereIsAnyRowInUL() {
return mArticoliInColloBottomSheetViewModel.mtbColt.get() != null &&
mArticoliInColloBottomSheetViewModel.mtbColt.get().getMtbColr() != null &&
@@ -842,7 +859,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
removeListFilter();
refreshOrderBy(true);
}
@@ -881,8 +897,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
float qtaEvasaCurrentUL = qtaEvasaCurrentULInMtbColr;
BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasaTotale));
if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO;

View File

@@ -0,0 +1,50 @@
package it.integry.integrywmsnative.view.dialogs.ask_should_print;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import androidx.appcompat.app.AlertDialog;
import androidx.databinding.DataBindingUtil;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.databinding.DialogAskShouldPrintBinding;
public class DialogAskShouldPrint {
private Context currentContext;
private AlertDialog currentAlert;
public static AlertDialog make(final Context context, final String nomeEtichetta, RunnableArgs<Boolean> onDialogDismiss) {
return new DialogAskShouldPrint(context, nomeEtichetta, onDialogDismiss).currentAlert;
}
private DialogAskShouldPrint(Context context, String nomeEtichetta, RunnableArgs<Boolean> onDialogDismiss) {
currentContext = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
DialogAskShouldPrintBinding bindings = DataBindingUtil.inflate(inflater, R.layout.dialog_ask_should_print, null, false);
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context)
.setView(bindings.getRoot());
currentAlert = alertDialog.create();
currentAlert.setCanceledOnTouchOutside(false);
bindings.printMessage.setText("La procedura stamperà una " + nomeEtichetta);
bindings.buttonConfirm.setOnClickListener(v -> {
currentAlert.dismiss();
onDialogDismiss.run(true);
});
bindings.buttonAbort.setOnClickListener(v -> {
currentAlert.dismiss();
onDialogDismiss.run(false);
});
}
}