Completato picking manuale da resi

This commit is contained in:
Giuseppe Scorrano 2019-08-06 09:50:31 +02:00
parent 30dd94ca80
commit 000a68c164
20 changed files with 872 additions and 225 deletions

View File

@ -1,5 +1,8 @@
package it.integry.integrywmsnative.core.REST.consumers;
import android.app.ProgressDialog;
import android.content.Context;
import com.annimon.stream.Stream;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@ -25,6 +28,8 @@ import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.plugins.barcode_base_library.model.BarcodeScanDTO;
import retrofit2.Call;
@ -453,5 +458,23 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer{
public static void updateDataFine(Context context, ProgressDialog progress, MtbColt mtbColt, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) mtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance());
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
onComplete.run();
}, ex -> {
UtilityExceptions.defaultException(context, ex, progress);
});
}
}

View File

@ -71,7 +71,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}
public static void getAvailablePrinters(String codMdep, Type printerType, final ISimpleOperationCallback<List<String>> callback) {
public static void getAvailablePrinters(String codMdep, Type printerType, RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
String printerTypeStr = printerType != null ? printerType.toString() : null;
@ -79,14 +79,14 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
printerService.getAvailablePrinters(codMdep, printerTypeStr).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<String>>> call, Response<ServiceRESTResponse<List<String>>> response) {
analyzeAnswer(response, "GetAvailablePrinters", callback);
analyzeAnswer(response, "GetAvailablePrinters", onComplete, onFailed);
}
@Override
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
Log.e("GetAvailablePrinters", t.toString());
UtilityLogger.errorMe(new Exception(t));
callback.onFailed(new Exception(t));
onFailed.run(new Exception(t));
}
});
}

View File

@ -747,4 +747,17 @@ public class DtbDocr {
this.mtbAart = mtbAart;
return this;
}
public String getStringKeyIdentifier() {
String separator = "|";
return
this.getCodAnag() + separator +
this.getCodDtip() + separator +
this.getSerDoc() + separator +
UtilityDate.formatDate(this.getDataDocD(), UtilityDate.COMMONS_DATE_FORMATS.YMD_SLASH) + separator +
this.getNumDoc() + separator +
this.getIdRiga();
}
}

View File

@ -34,4 +34,24 @@ public class ReportManager {
}
public static String getRightReportNameByGestione(GestioneEnum gestione) {
if(gestione != null){
switch (gestione) {
case ACQUISTO:
case PRODUZIONE:
return "EtichettaBancale";
case LAVORAZIONE:
return "EtichettaInventario";
case VENDITA:
return "EtichettaSpedizione";
}
}
return null;
}
}

View File

@ -67,4 +67,12 @@ public class UtilityNumber {
return numberString.replaceAll(",", ".");
}
public static Float decimalToFloat(BigDecimal bigDecimalValue) {
String tmp = decimalToString(bigDecimalValue);
return Float.parseFloat(tmp);
}
}

View File

@ -16,6 +16,8 @@ import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
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.utility.UtilityExceptions;
import it.integry.integrywmsnative.databinding.ActivityAccettazioneOrdineInevasoBinding;
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
@ -110,7 +112,7 @@ public class AccettazioneOrdineInevasoActivity extends AppCompatActivity {
public void startListaBancaliRegistratiActivity(ArrayList<MtbColt> mtbColts){
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA);
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO));
this.startActivityForResult(myIntent, PICK_UL_REQUEST);
}

View File

@ -683,9 +683,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
return;
}
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.SECONDARIA, value -> {
if(value.size() > 0) {
try{
@ -727,12 +725,8 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, null).show();
}
}
@Override
public void onFailed(Exception ex) {
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
}

View File

@ -25,9 +25,10 @@ public class ContenutoBancaleActivity extends AppCompatActivity {
private static final String MtbColtKey = "mtbColtKey";
private static final String CanRecoverUL = "canRecoverUL";
private static final String PrinterType = "printerType";
private static final String ReportName = "reportName";
}
public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) {
public static Intent createIntent(Context context, MtbColt item, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) {
Intent myIntent = new Intent(context, ContenutoBancaleActivity.class);
String keyMtbColt = DataCache.addItem(item);
@ -39,9 +40,8 @@ public class ContenutoBancaleActivity extends AppCompatActivity {
String keyPrinterType = DataCache.addItem(printerType);
myIntent.putExtra(Key.PrinterType, keyPrinterType);
// myIntent.putExtra(Key.MtbColtKey, item);
// myIntent.putExtra(Key.CanRecoverUL, canRecoverUl);
// myIntent.putExtra(Key.PrinterType, printerType);
String keyReportName = DataCache.addItem(reportName);
myIntent.putExtra(Key.ReportName, keyReportName);
return myIntent;
}
@ -54,13 +54,11 @@ public class ContenutoBancaleActivity extends AppCompatActivity {
boolean canRecoverUL = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
MtbColt mtbColt = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtKey));
String reportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
PrinterRESTConsumer.Type mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
// if(getIntent().hasExtra(Key.PrinterType)) {
// mPrinterType = (PrinterRESTConsumer.Type) getIntent().getSerializableExtra(Key.PrinterType);
// } else mPrinterType = null;
mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType);
mViewModel = new ContenutoBancaleViewModel(this, mtbColt, canRecoverUL, mPrinterType, reportName);
bindings.elevatedToolbar.setNestedScrollView(bindings.scrollView);

View File

@ -42,13 +42,15 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
private ContenutoBancaleListAdapter mAdapter;
private PrinterRESTConsumer.Type mPrinterType;
private String mReportName;
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType){
public ContenutoBancaleViewModel(ContenutoBancaleActivity context, MtbColt mtbColt, boolean canRecoverUL, PrinterRESTConsumer.Type printerType, String defaultReportName){
mContext = context;
this.mtbColt = new ObservableField<>(mtbColt);
this.isFabVisible.set(true);
this.isRecoverFabMenuVisible.set(canRecoverUL);
this.mPrinterType = printerType;
this.mReportName = defaultReportName;
mContext.bindings.setViewModel(this);
@ -102,15 +104,15 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
final ProgressDialog progress = ProgressDialog.show(mContext, mContext.getText(R.string.waiting),
mContext.getText(R.string.loading) + " ...", true);
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), mPrinterType, value -> {
if(value.size() > 0) {
try {
ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> {
reportName = mReportName != null ? mReportName : reportName;
PrinterRESTConsumer.printCollo(value.get(0),
mtbColt.get(),
1,
@ -134,12 +136,8 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mContext, new SpannableString(errorMessage), null, null).show();
}
}
@Override
public void onFailed(Exception ex) {
}, ex -> {
UtilityExceptions.defaultException(mContext, ex, progress);
}
});
}

View File

@ -23,6 +23,7 @@ public class ListaBancaliActivity extends AppCompatActivity {
private static final String MtbColtsKey = "mtbColtsKey";
private static final String CanRecoverUL = "canRecoverUL";
private static final String PrinterType = "printerType";
private static final String ReportName = "reportName";
}
public ActivityListaBancaliBinding bindings;
@ -31,11 +32,30 @@ public class ListaBancaliActivity extends AppCompatActivity {
private boolean mCanRecoverUl;
private PrinterRESTConsumer.Type mPrinterType;
private String mReportName;
private static final int PICK_UL_REQUEST = 1; // The request code
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType, String reportName) {
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
String mtbColtsKey = DataCache.addItem(items);
myIntent.putExtra(Key.MtbColtsKey, mtbColtsKey);
String canRecoverULKey = DataCache.addItem(canRecoverUl);
myIntent.putExtra(Key.CanRecoverUL, canRecoverULKey);
String printerTypeKey = DataCache.addItem(printerType);
myIntent.putExtra(Key.PrinterType, printerTypeKey);
String reportNameKey = DataCache.addItem(reportName);
myIntent.putExtra(Key.ReportName, reportNameKey);
return myIntent;
}
public static Intent createIntent(Context context, ArrayList<MtbColt> items, boolean canRecoverUl, PrinterRESTConsumer.Type printerType) {
Intent myIntent = new Intent(context, ListaBancaliActivity.class);
@ -58,11 +78,8 @@ public class ListaBancaliActivity extends AppCompatActivity {
mCanRecoverUl = DataCache.retrieveItem(getIntent().getStringExtra(Key.CanRecoverUL));
mPrinterType = DataCache.retrieveItem(getIntent().getStringExtra(Key.PrinterType));
// if(getIntent().hasExtra(Key.PrinterType)) {
// mPrinterType = (PrinterRESTConsumer.Type) getIntent().getSerializableExtra(Key.PrinterType);
// } else mPrinterType = null;
mReportName = DataCache.retrieveItem(getIntent().getStringExtra(Key.ReportName));
List<MtbColt> mtbColts = DataCache.retrieveItem(getIntent().getStringExtra(Key.MtbColtsKey));
mViewModel = new ListaBancaliViewModel(this, mtbColts);
@ -81,7 +98,7 @@ public class ListaBancaliActivity extends AppCompatActivity {
}
public void startContenutoBancaleActivity(MtbColt item){
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType);
Intent myIntent = ContenutoBancaleActivity.createIntent(this, item, mCanRecoverUl, mPrinterType, mReportName);
startActivityForResult(myIntent, PICK_UL_REQUEST);
}

View File

@ -4,6 +4,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.LinearLayoutManager;
import android.app.ProgressDialog;
@ -19,39 +20,55 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.REST.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.data_cache.DataCache;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecover;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbColr;
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.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ActivityPickingResiBinding;
import it.integry.integrywmsnative.databinding.FragmentArticoliInColloBottomSheetBinding;
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
import it.integry.integrywmsnative.gest.ultime_consegne_cliente.rest.UltimeConsegneClienteRESTConsumer;
import it.integry.integrywmsnative.gest.picking_resi.core.PickingResiListAdapter;
import it.integry.integrywmsnative.gest.vendita.dto.PickingObjectDTO;
import it.integry.integrywmsnative.gest.vendita.rest.model.DocumentoResoDTO;
import it.integry.integrywmsnative.view.bottomsheet.interfaces.IOnColloClosedCallback;
import it.integry.integrywmsnative.view.bottomsheet.viewmodel.ArticoliInColloBottomSheetViewModel;
import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShouldPrint;
import it.integry.integrywmsnative.view.dialogs.base.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;
public class PickingResiActivity extends AppCompatActivity {
public class PickingResiActivity extends AppCompatActivity implements IOnColloClosedCallback {
private List<DocumentoResoDTO> mDocumentiResiList;
private List<DtbDocr> mDtbDocrList;
private HashMap<DtbDocr, List<MtbColr>> mWithdrawRows = new HashMap<>();
public ObservableList<WithdrawableDtbDocr> mDtbDocrList;
private final List<MtbColt> mColliRegistrati = new ArrayList<>();
private ActivityPickingResiBinding mBinding;
private ArticoliInColloBottomSheetViewModel mArticoliInColloBottomSheetViewModel;
public ObservableField<MtbColt> currentMtbColt = new ObservableField<>();
private PickingResiListAdapter mAdapter;
private int barcodeScannerIstanceID = -1;
private String mDefaultGestioneOfUL;
@ -72,6 +89,14 @@ public class PickingResiActivity extends AppCompatActivity {
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_picking_resi);
mBinding.setViewmodel(this);
this.mDtbDocrList = new ObservableArrayList<>();
mArticoliInColloBottomSheetViewModel = new ArticoliInColloBottomSheetViewModel(this, this.mBinding.bottomSheetInclude);
mArticoliInColloBottomSheetViewModel.setOnCloseColloCallbackListener(this);
mArticoliInColloBottomSheetViewModel.setOnItemEditedCallback(this::onItemEdited);
mArticoliInColloBottomSheetViewModel.setOnItemDeletedCallback(this::onItemDeleted);
mDocumentiResiList = DataCache.retrieveItem(getIntent().getStringExtra("key"));
this.initView();
@ -87,18 +112,20 @@ public class PickingResiActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
// if(mArticoliInColloBottomSheetViewModel.isExpanded()){
// mArticoliInColloBottomSheetViewModel.collapse();
// } else if(mVenditaOrdineInevasoViewModel.thereIsAnOpenedUL()) {
// mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
// BarcodeManager.removeCallback(barcodeScannerIstanceID);
// super.onBackPressed();
// });
//
// } else {
if(mArticoliInColloBottomSheetViewModel.isExpanded()){
mArticoliInColloBottomSheetViewModel.collapse();
}
else if(thereIsAnOpenedUL()) {
mArticoliInColloBottomSheetViewModel.closeCurrentUL(() -> {
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed();
// }
});
}
else {
BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onBackPressed();
}
}
private void initView() {
@ -115,27 +142,27 @@ public class PickingResiActivity extends AppCompatActivity {
ProgressDialog progressDialog = UtilityProgress.createDefaultProgressDialog(this);
UltimeConsegneClienteRESTConsumer.loadDocRowFromConsegna(mDocumentiResiList, dtbDocrToPick -> {
progressDialog.dismiss();
this.mDtbDocrList = dtbDocrToPick;
this.mDtbDocrList.addAll(dtbDocrToPick);
try {
this.initDatiPicking();
} catch (Exception ex) {
this.showErrorDialog(ex.getMessage());
DialogSimpleMessageHelper.showSimpleErrorDialog(this, ex.getMessage());
}
this.initList(dtbDocrToPick);
this.initList();
}, ex -> {
UtilityExceptions.defaultException(this, ex, progressDialog);
});
}
private void initList(List<DtbDocr> dtbDocrList) {
private void initList() {
PickingResiListAdapter adapter = new PickingResiListAdapter(this, dtbDocrList);
adapter.setOnItemClicked(this::onOrdineRowDispatch);
mAdapter = new PickingResiListAdapter(this, this.mDtbDocrList);
mAdapter.setOnItemClicked(this::onOrdineRowDispatch);
this.mBinding.mainList.setLayoutManager(new LinearLayoutManager(this));
this.mBinding.mainList.setAdapter(adapter);
this.mBinding.mainList.setAdapter(mAdapter);
}
private void initDatiPicking() throws Exception {
@ -168,10 +195,6 @@ public class PickingResiActivity extends AppCompatActivity {
throw new Exception("Sono stati caricati documenti con diversi codici deposito");
} else mDefaultCodMDepOfUL = foundCodMdeps.get(0);
for (DtbDocr dtbDocr : mDtbDocrList) {
this.mWithdrawRows.put(dtbDocr, new ArrayList<>());
}
}
@ -235,15 +258,16 @@ public class PickingResiActivity extends AppCompatActivity {
}
this.currentMtbColt.set(mtbColt);
mArticoliInColloBottomSheetViewModel.mtbColt.set(mtbColt);
}
public void onOrdineRowDispatch(final DtbDocr item) {
public void onOrdineRowDispatch(final WithdrawableDtbDocr item) {
if(currentMtbColt.get() != null){
List<MtbColr> currentMtbColrs = mWithdrawRows.get(item);
List<MtbColr> currentMtbColrs = item.getWithdrawRows();
BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO;
for (MtbColr mtbColr : currentMtbColrs) {
@ -306,19 +330,256 @@ public class PickingResiActivity extends AppCompatActivity {
// }
DialogInputQuantity.makeBase(this, dto, false, (quantityDTO, closeUL) -> {
//onOrdineRowDispatched(item, quantityDTO, closeUL);
onOrdineRowDispatched(item, quantityDTO, closeUL);
}, null).show();
}
}
private void showErrorDialog(String message) {
DialogSimpleMessageHelper.makeErrorDialog(
this,
new SpannableString(message),
null,
null).show();
private void onOrdineRowDispatched(WithdrawableDtbDocr item, QuantityDTO quantityDTO, boolean closeUL){
final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(this);
final MtbColr mtbColr = new MtbColr()
.setCodMart(item.getCodMart())
.setPartitaMag(UtilityString.empty2null(quantityDTO.batchLot.get()))
.setQtaCol(quantityDTO.qtaTot.getBigDecimal())
.setQtaCnf(quantityDTO.qtaCnf.getBigDecimal())
.setNumCnf(quantityDTO.numCnf.getBigDecimal())
.setDescrizione(item.getDescrizioneEstesa())
.setDatetimeRow(UtilityDate.getDateInstance())
.setNote(item.getStringKeyIdentifier());
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
mtbColr
.setDataCollo(value.getDataColloS())
.setNumCollo(value.getNumCollo())
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(item.getMtbAart().getUntMis())
.setMtbAart(item.getMtbAart());
item.getWithdrawRows().add(mtbColr);
int currentIndex = this.mDtbDocrList.indexOf(item);
this.refreshDtbDocrItem(item);
currentMtbColt.get().getMtbColr().add(mtbColr);
//Chiamato removeListFilter perché cosi mi cancella tutti i dati di pick temporanei
removeListFilter();
FBToast.successToast(this, this.getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
progress.dismiss();
// if(closeUL) onColloClosed(null);
}, ex -> {
UtilityExceptions.defaultException(this, ex, progress);
});
}
@Override
public void onColloClosed(Runnable onComplete) {
if(thereIsAnOpenedUL()) {
final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(this);
progress.show();
if(thereIsAnyRowInUL()) {
ColliMagazzinoRESTConsumer.updateDataFine(
this,
progress,
currentMtbColt.get(),
() -> printCollo(progress, currentMtbColt.get(), onComplete));
} else {
deleteCollo(progress, onComplete);
}
} else {
if(onComplete != null) onComplete.run();
}
}
private void onItemEdited(MtbColr mtbColrOriginal, MtbColr mtbColrEdited) {
for(int i = 0; i < mDtbDocrList.size(); i++) {
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrOriginal);
if(foundIndex >= 0){
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
mDtbDocrList.get(i).getWithdrawRows().add(foundIndex, mtbColrEdited);
refreshDtbDocrItem(this.mDtbDocrList.get(i));
break;
}
}
}
private void onItemDeleted(MtbColr mtbColrDeleted) {
for(int i = 0; i < mDtbDocrList.size(); i++) {
int foundIndex = mDtbDocrList.get(i).getWithdrawRows().indexOf(mtbColrDeleted);
if(foundIndex >= 0){
mDtbDocrList.get(i).getWithdrawRows().remove(foundIndex);
refreshDtbDocrItem(this.mDtbDocrList.get(i));
break;
}
}
}
private void printCollo(ProgressDialog progress, MtbColt mtbColtToPrint, Runnable onComplete) {
DialogAskShouldPrint.make(this, "Packing List", shouldPrint -> {
if(shouldPrint) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
if (printerList.size() > 0) {
try {
singlePrint(mtbColtToPrint, printerList.get(0), () -> {
postCloseOperations(mtbColtToPrint, onComplete);
progress.dismiss();
}, ex -> {
progress.dismiss();
String errorMessage = ex.getMessage();
DialogSimpleMessageHelper.makeErrorDialog(
this,
new SpannableString(errorMessage),
null,
null,
R.string.button_ignore_print,
() -> postCloseOperations(mtbColtToPrint, onComplete)).show();
});
} catch (Exception ex) {
UtilityExceptions.defaultException(this, ex, progress);
postCloseOperations(mtbColtToPrint, onComplete);
}
} else {
progress.dismiss();
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(this, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtToPrint, onComplete)).show();
}
}, ex -> {
UtilityExceptions.defaultException(this, ex, progress);
});
} else {
postCloseOperations(mtbColtToPrint, onComplete);
progress.dismiss();
}
}).show();
}
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printCollo(
printerName,
mtbColtToPrint,
1,
reportName, onComplete, onAbort);
}, onAbort);
}
private void postCloseOperations(MtbColt generatedMtbColt, Runnable onComplete) {
this.mColliRegistrati.add(generatedMtbColt);
setULToCurrentContext(null);
for(int i = 0; i < this.mDtbDocrList.size(); i++) {
WithdrawableDtbDocr dtbDocr = this.mDtbDocrList.get(i);
List<MtbColr> withdraws = dtbDocr.getWithdrawRows();
for(int k = 0; k < withdraws.size(); k++) {
MtbColr withdrawRow = withdraws.get(k);
dtbDocr.setQtaDoc(dtbDocr.getQtaDoc().subtract(withdrawRow.getQtaCol()));
}
dtbDocr.getWithdrawRows().clear();
if(UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc()) <= 0) {
this.mDtbDocrList.remove(dtbDocr);
i--;
} else this.refreshDtbDocrItem(dtbDocr);
}
removeListFilter();
if(onComplete != null) onComplete.run();
}
private void deleteCollo(ProgressDialog progress, Runnable onComplete) {
ColliMagazzinoRESTConsumer.deleteCollo(currentMtbColt.get(), () -> {
setULToCurrentContext(null);
progress.dismiss();
if(onComplete != null) onComplete.run();
}, ex -> UtilityExceptions.defaultException(this, ex, progress)
);
}
public boolean thereIsAnOpenedUL() {
return currentMtbColt.get() != null;
}
public boolean thereIsAnyRowInUL() {
return currentMtbColt.get() != null &&
currentMtbColt.get().getMtbColr() != null &&
currentMtbColt.get().getMtbColr().size() > 0;
}
private void refreshDtbDocrItem(WithdrawableDtbDocr dtbDocr) {
int index = this.mDtbDocrList.indexOf(dtbDocr);
this.mDtbDocrList.remove(dtbDocr);
this.mDtbDocrList.add(index, dtbDocr);
}
public void applyFilter(String descriptionText) {
// this.mBindings.filteredArtsInListExpandableLayout.expand(true);
//
// this.mBindings.descriptionFilterText.setText(descriptionText);
}
public void removeListFilter() {
// for(int i = 0; i < mPickingList.size(); i++) {
// mPickingList.get(i).setTempHidden(false);
// mPickingList.get(i).setTempPickData(null);
// }
//
// refreshOrderBy(false);
// this.mBindings.filteredArtsInListExpandableLayout.collapse(true);
}
}

View File

@ -1,35 +1,41 @@
package it.integry.integrywmsnative.gest.picking_resi.core;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemBinding;
import it.integry.integrywmsnative.databinding.UltimeConsegneMainListItemHeaderBinding;
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<PickingResiListAdapter.SubheaderHolder, PickingResiListAdapter.SingleItemViewHolder> {
private Context mContext;
private List<DtbDocr> mDataset;
private List<WithdrawableDtbDocr> mDataset;
private RunnableArgs<DtbDocr> mOnItemClicked;
private RunnableArgs<WithdrawableDtbDocr> mOnItemClicked;
static class SubheaderHolder extends RecyclerView.ViewHolder {
@ -53,14 +59,50 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
}
public PickingResiListAdapter(Context context, List<DtbDocr> data) {
public PickingResiListAdapter(Context context, ObservableList<WithdrawableDtbDocr> data) {
this.mContext = context;
this.mDataset = Stream.of(data)
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag())
.toList();
this.mDataset = new ArrayList<>();
refreshData(data);
data.addOnListChangedCallback(new ObservableList.OnListChangedCallback<ObservableList<WithdrawableDtbDocr>>() {
@Override
public void onChanged(ObservableList<WithdrawableDtbDocr> sender) {
refreshData(sender);
}
public void setOnItemClicked(RunnableArgs<DtbDocr> onItemClicked) {
@Override
public void onItemRangeChanged(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
refreshData(sender);
}
@Override
public void onItemRangeInserted(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
refreshData(sender);
}
@Override
public void onItemRangeMoved(ObservableList<WithdrawableDtbDocr> sender, int fromPosition, int toPosition, int itemCount) {
refreshData(sender);
}
@Override
public void onItemRangeRemoved(ObservableList<WithdrawableDtbDocr> sender, int positionStart, int itemCount) {
refreshData(sender);
}
});
}
private void refreshData(List<WithdrawableDtbDocr> data) {
this.mDataset.clear();
this.mDataset.addAll(Stream.of(data)
.sortBy(x -> x.getNumDoc() + " " + x.getDataDocS() + " " + x.getCodDtip() + " " + x.getSerDoc() + " " + x.getCodAnag() + " " + x.getIdRiga())
.toList());
this.notifyDataChanged();
}
public void setOnItemClicked(RunnableArgs<WithdrawableDtbDocr> onItemClicked) {
this.mOnItemClicked = onItemClicked;
}
@ -78,13 +120,31 @@ public class PickingResiListAdapter extends SectionedRecyclerViewAdapter<Picking
@Override
public void onBindItemViewHolder(final SingleItemViewHolder holder, final int position) {
final DtbDocr dtbDocr = this.mDataset.get(position);
final WithdrawableDtbDocr dtbDocr = this.mDataset.get(position);
BigDecimal qtaEvasa = BigDecimal.ZERO;
for(MtbColr mtbColr : dtbDocr.getWithdrawRows()) {
qtaEvasa = qtaEvasa.add(mtbColr.getQtaCol());
}
Float qtaDaEvadere = UtilityNumber.decimalToFloat(dtbDocr.getQtaDoc().subtract(qtaEvasa));
holder.mBinding.badge1.setText(dtbDocr.getCodMart());
holder.mBinding.qtaEvasa.setText(String.valueOf(0));
holder.mBinding.qtaEvasa.setText(UtilityNumber.decimalToString(qtaEvasa));
holder.mBinding.qtaTot.setText(UtilityNumber.decimalToString(dtbDocr.getQtaDoc()));
holder.mBinding.descrizione.setText(UtilityString.isNullOrEmpty(dtbDocr.getDescrizioneEstesa()) ? dtbDocr.getDescrizioneEstesa() : dtbDocr.getDescrizione());
if (qtaDaEvadere <= 0 ) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.green_500_with_alpha));
} else if (qtaDaEvadere > 0 && qtaEvasa.floatValue() > 0) {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.orange_600_with_alpha));
} else {
holder.mBinding.getRoot().setBackgroundColor(mContext.getResources().getColor(R.color.full_white));
}
holder.mBinding.getRoot().setOnClickListener(v -> {
if(this.mOnItemClicked != null) this.mOnItemClicked.run(dtbDocr);
});

View File

@ -0,0 +1,25 @@
package it.integry.integrywmsnative.gest.picking_resi.dto;
import java.util.ArrayList;
import java.util.List;
import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbColr;
public class WithdrawableDtbDocr extends DtbDocr {
private List<MtbColr> withdrawRows = new ArrayList<>();
public WithdrawableDtbDocr() {
super();
}
public List<MtbColr> getWithdrawRows() {
return withdrawRows;
}
public WithdrawableDtbDocr setWithdrawRows(List<MtbColr> withdrawRows) {
this.withdrawRows = withdrawRows;
return this;
}
}

View File

@ -15,6 +15,7 @@ import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
import it.integry.integrywmsnative.gest.vendita.rest.model.DocumentoResoDTO;
public class UltimeConsegneClienteRESTConsumer {
@ -53,7 +54,7 @@ public class UltimeConsegneClienteRESTConsumer {
public static void loadDocRowFromConsegna(List<DocumentoResoDTO> consegne, RunnableArgs<ArrayList<DtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
public static void loadDocRowFromConsegna(List<DocumentoResoDTO> consegne, RunnableArgs<ArrayList<WithdrawableDtbDocr>> onComplete, RunnableArgs<Exception> onFailed) {
StringBuilder sbWhereCond = new StringBuilder();
for(int i = 0; i < consegne.size(); i++) {
@ -67,23 +68,90 @@ public class UltimeConsegneClienteRESTConsumer {
if(i < consegne.size()-1) sbWhereCond.append(" OR ");
}
String sql = "SELECT dtb_docr.* " +
String sql = "SELECT dtb_docr.[cod_anag]" +
" ,dtb_docr.[cod_dtip]" +
" ,dtb_docr.[data_doc]" +
" ,dtb_docr.[ser_doc]" +
" ,dtb_docr.[num_doc]" +
" ,dtb_docr.[id_riga]" +
" ,dtb_docr.[cod_mart]" +
" ,dtb_docr.[descrizione]" +
" ,dtb_docr.[unt_doc]" +
" ,dtb_docr.[rap_conv]" +
" ,dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) as qta_doc" +
" ,dtb_docr.[val_unt]" +
" ,dtb_docr.[sconto5]" +
" ,dtb_docr.[sconto6]" +
" ,dtb_docr.[sconto7]" +
" ,dtb_docr.[sconto8]" +
" ,dtb_docr.[cod_aliq]" +
" ,dtb_docr.[perc_prov]" +
" ,dtb_docr.[val_prov]" +
" ,dtb_docr.[data_ord]" +
" ,dtb_docr.[num_ord]" +
" ,dtb_docr.[riga_ord]" +
" ,dtb_docr.[importo_riga]" +
" ,dtb_docr.[cod_col]" +
" ,dtb_docr.[cod_tagl]" +
" ,dtb_docr.[cod_jcom]" +
" ,dtb_docr.[cod_mdep]" +
" ,dtb_docr.[perc_gest]" +
" ,dtb_docr.[val_gest]" +
" ,dtb_docr.[partita_mag]" +
" ,dtb_docr.[val_unt_iva]" +
" ,dtb_docr.[qta_cnf]" +
" ,dtb_docr.[descrizione_estesa]" +
" ,dtb_docr.[costo_unt]" +
" ,dtb_docr.[perc_ispe]" +
" ,dtb_docr.[val_ispe]" +
" ,dtb_docr.[perc_promo]" +
" ,dtb_docr.[val_promo]" +
" ,dtb_docr.[perc_oneri]" +
" ,dtb_docr.[val_oneri]" +
" ,dtb_docr.[flag_evaso_forzato]" +
" ,dtb_docr.[cod_dtip_comp]" +
" ,dtb_docr.[data_doc_comp]" +
" ,dtb_docr.[ser_doc_comp]" +
" ,dtb_docr.[num_doc_comp]" +
" ,dtb_docr.[cod_promo]" +
" ,dtb_docr.[perc_prov2]" +
" ,dtb_docr.[val_prov2]" +
" ,dtb_docr.[cod_art_for]" +
" ,dtb_docr.[unt_doc2]" +
" ,dtb_docr.[qta_doc2]" +
" ,dtb_docr.[unt_doc3]" +
" ,dtb_docr.[qta_doc3]" +
" ,dtb_docr.[num_cnf]" +
" ,dtb_docr.[peso_lordo]" +
" ,dtb_docr.[posizione]" +
" ,dtb_docr.[cod_anag_comp]" +
" ,dtb_docr.[cod_mtip]" +
" ,dtb_docr.[matricola]" +
" ,dtb_docr.[data_iniz_comp]" +
" ,dtb_docr.[data_fine_comp]" +
" ,dtb_docr.[cod_kit]" +
" ,dtb_docr.[cod_alis]" +
" ,dtb_docr.[data_ins_row]" +
" ,dtb_docr.[note] " +
"FROM dtb_docr " +
"INNER JOIN mtb_aart ON dtb_docr.cod_mart = mtb_aart.cod_mart " +
"LEFT OUTER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon " +
"LEFT OUTER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp " +
"LEFT OUTER JOIN mtb_colr ON " +
" dtb_docr.cod_anag + '|' + dtb_docr.cod_dtip + '|' + dtb_docr.ser_doc + '|' + CONVERT(varchar(10), dtb_docr.data_doc , 111) + '|' + CONVERT(varchar(20), dtb_docr.num_doc) + '|' + CONVERT(varchar(20), dtb_docr.id_riga) = mtb_colr.note " +
"WHERE " +
" (ctb_grup.sezione <> 1 OR ctb_grup.sezione IS NULL) AND " +
" dtb_docr.[qta_doc] - ISNULL(mtb_colr.qta_col, 0) > 0 AND" +
" ( " +
sbWhereCond.toString() +
" ) " +
"ORDER BY cod_mart";
Type typeOfObjectsList = new TypeToken<ArrayList<DtbDocr>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DtbDocr>>() {
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
@Override
public void onSuccess(ArrayList<DtbDocr> values) {
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {
if(values != null && values.size() > 0){
List<String> codMarts = Stream.of(values)

View File

@ -887,7 +887,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.show();
if(thereIsAnyRowInUL()) {
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts, onComplete)));
ColliMagazzinoRESTConsumer.updateDataFine(
mActivity,
progress,
mArticoliInColloBottomSheetViewModel.mtbColt.get(),
() -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts, onComplete)));
} else {
if(mtbColtSessionID != null) ColliDataRecover.closeSession(mtbColtSessionID);
deleteCollo(progress, onComplete);
@ -899,26 +903,6 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
}
private void updateDataFine(ProgressDialog progress, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setOraFinePrep(UtilityDate.getDateInstance());
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
onComplete.run();
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
}
private void distribuisciCollo(ProgressDialog progress, RunnableArgs<List<MtbColt>> onComplete) {
@ -945,9 +929,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
if(shouldPrint) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, new ISimpleOperationCallback<List<String>>() {
@Override
public void onSuccess(List<String> value) {
PrinterRESTConsumer.getAvailablePrinters(SettingsManager.i().userSession.depo.getCodMdep(), PrinterRESTConsumer.Type.PRIMARIA, value -> {
if (value.size() > 0) {
try {
@ -975,12 +957,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
String errorMessage = "Nessuna stampante configurata";
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtsToPrint, onComplete)).show();
}
}
@Override
public void onFailed(Exception ex) {
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
} else {
postCloseOperations(mtbColtsToPrint, onComplete);
@ -1183,8 +1161,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
}
private void onOrdineRowDispatched(PickingObjectDTO item, QuantityDTO quantityDTO, boolean closeUL){
final ProgressDialog progress = ProgressDialog.show(mActivity, mActivity.getText(R.string.waiting),
mActivity.getText(R.string.loading) + " ...", true);
final ProgressDialog progress = UtilityProgress.createDefaultProgressDialog(mActivity);
final MtbColr mtbColr = new MtbColr()
.setCodMart(item.getCodMart())
@ -1222,9 +1199,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
cloneMtbColt.setMtbColr(new ObservableArrayList());
cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override
public void onSuccess(MtbColt value) {
ColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
mtbColr
.setDataCollo(value.getDataColloS())
@ -1248,12 +1223,8 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
progress.dismiss();
if(closeUL) onColloClosed(null);
}
@Override
public void onFailed(Exception ex) {
}, ex -> {
UtilityExceptions.defaultException(mActivity, ex, progress);
}
});
}

View File

@ -12,6 +12,8 @@ import android.graphics.drawable.Drawable;
import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.AppCompatImageView;
import android.text.SpannableString;
import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
@ -194,6 +196,14 @@ public class DialogSimpleMessageHelper {
null, -1, null);
}
public static void showSimpleWarningDialog(Context context, String message){
makeErrorDialog(
context,
new SpannableString(message),
null,
null).show();
}
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick){
return makeBase(TYPE.ERROR,
@ -205,6 +215,14 @@ public class DialogSimpleMessageHelper {
null, -1, null);
}
public static void showSimpleErrorDialog(Context context, String message){
makeErrorDialog(
context,
new SpannableString(message),
null,
null).show();
}
public static Dialog makeErrorDialog(Context mContext, Spanned messageText, HashMap<String, String> hashmapContent, Runnable onPositiveClick, @StringRes int rNeutralButtonString, Runnable onNeutralClick){
return makeBase(TYPE.ERROR,

View File

@ -254,7 +254,8 @@
<include
android:id="@+id/bottom_sheet_include"
layout="@layout/fragment_articoli_in_collo_bottom_sheet"></include>
layout="@layout/fragment_articoli_in_collo_bottom_sheet"
android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto">
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
<variable
@ -8,14 +10,30 @@
type="it.integry.integrywmsnative.gest.picking_resi.PickingResiActivity" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
android:background="@color/full_white"
tools:context=".gest.picking_resi.PickingResiActivity">
android:layout_gravity="top">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/empty_space_padding">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@color/full_white">
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
@ -28,6 +46,7 @@
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:gravity="center_horizontal"
app:layout_collapseMode="pin"
style="@style/MaterialToolbar.Event">
</androidx.appcompat.widget.Toolbar>
@ -35,13 +54,138 @@
</it.integry.integrywmsnative.ui.ElevatedToolbar>
</com.google.android.material.appbar.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
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_toStartOf="@+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>
<com.google.android.material.button.MaterialButton
android:id="@+id/remove_art_filter_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Button.DangerOutline"
android:layout_alignParentEnd="true"
android:text="@string/remove_filter_button"
android:onClick="@{() -> viewmodel.removeListFilter()}"
app:strokeColor="@color/red_600"/>
</RelativeLayout>
</net.cachapa.expandablelayout.ExpandableLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_list"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/elevated_toolbar" />
android:layout_height="match_parent"
android:scrollbars="vertical"
android:clipToPadding="false"/>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/vendita_ordine_inevaso_empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3"
android:visibility="@{viewmodel.mDtbDocrList.size() > 0 ? View.GONE : View.VISIBLE}"
tools:context=".gest.lista_bancali.ListaBancaliActivity">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp"
android:adjustViewBounds="true"/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="@string/no_item_to_pick_text"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.github.clans.fab.FloatingActionMenu
android:id="@+id/main_fab"
@ -81,8 +225,8 @@
fab:menu_shadowYOffset="3dp"
fab:menu_showShadow="true">
<com.github.clans.fab.FloatingActionButton
android:id="@+id/vendita_ordine_inevaso_fab_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add_24dp"
@ -94,6 +238,32 @@
</com.github.clans.fab.FloatingActionMenu>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<RelativeLayout
android:id="@+id/empty_space_padding"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
android:layout_alignParentBottom="true">
</RelativeLayout>
</RelativeLayout>
<View
android:id="@+id/shadow"
android:layout_width="match_parent"
android:layout_height="16dp"
android:background="@drawable/shape_gradient_top_shadow"
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}"
app:layout_anchor="@id/bottom_sheet_include" />
<include
android:id="@+id/bottom_sheet_include"
layout="@layout/fragment_articoli_in_collo_bottom_sheet"
android:visibility="@{viewmodel.currentMtbColt != null ? View.VISIBLE : View.GONE}" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

View File

@ -275,7 +275,8 @@
<include
android:id="@+id/bottom_sheet_include"
layout="@layout/fragment_articoli_in_collo_bottom_sheet"></include>
layout="@layout/fragment_articoli_in_collo_bottom_sheet"
android:visibility="@{!viewmodel.isFabVisible ? View.VISIBLE : View.GONE}" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@ -16,7 +16,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:visibility="@{viewModel.mtbColt.get() != null ? View.VISIBLE : View.GONE}"
app:behavior_peekHeight="?attr/actionBarSize"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
app:behavior_hideable="false">