Completato refactoring rettifica giacenze

This commit is contained in:
Giuseppe Scorrano 2020-09-04 13:11:39 +02:00
parent d31cab558a
commit 6b1a506577
44 changed files with 1848 additions and 555 deletions

View File

@ -1,5 +1,23 @@
<component name="ProjectCodeStyleConfiguration"> <component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173"> <code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
</JetCodeStyleSettings>
<codeStyleSettings language="XML"> <codeStyleSettings language="XML">
<arrangement> <arrangement>
<rules> <rules>

View File

@ -12,6 +12,7 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
@Module @Module
public class MainApplicationModule { public class MainApplicationModule {
@ -58,5 +59,11 @@ public class MainApplicationModule {
return new PrinterRESTConsumer(); return new PrinterRESTConsumer();
} }
@Provides
@Singleton
SystemRESTConsumer provideSystemRESTConsumer() {
return new SystemRESTConsumer();
}
} }

View File

@ -0,0 +1,15 @@
package it.integry.integrywmsnative.core.exception;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
public class InvalidLUGestioneException extends Exception {
public InvalidLUGestioneException() {
super("La GESTIONE dell'unità logistica scansionata non è valida");
}
public InvalidLUGestioneException(GestioneEnum gestioneEnum) {
super("La GESTIONE " + gestioneEnum.getText() + " dell'unità logistica scansionata non è valida");
}
}

View File

@ -0,0 +1,52 @@
package it.integry.integrywmsnative.core.expansion.view;
import android.view.View;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback;
public abstract class ExtendedRecyclerView<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
protected ArrayList<T> mDataset;
private View mEmptyView;
public ExtendedRecyclerView(ObservableArrayList<T> myDataset) {
mDataset = myDataset;
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
@Override
public void onChanged(ObservableList sender) {
notifyDataSetChanged();
checkIfEmpty();
}
});
checkIfEmpty();
}
@Override
public void onViewRecycled(VH holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
public ExtendedRecyclerView<T, VH> setEmptyView(View emptyView) {
this.mEmptyView = emptyView;
return this;
}
private void checkIfEmpty() {
if (mEmptyView != null) {
final boolean emptyViewVisible = getItemCount() == 0;
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
}
}
}

View File

@ -0,0 +1,11 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
public interface ILUPositionListener {
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);
}

View File

@ -0,0 +1,13 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
public interface ILUPrintListener {
void onLUSuccessullyPrinted();
void onLUPrintRequest(RunnableArgs<Boolean> onComplete);
void onLUPrintError(Exception ex, Runnable onComplete);
}

View File

@ -2,6 +2,8 @@ package it.integry.integrywmsnative.core.model;
public class CommonModelConsts { public class CommonModelConsts {
public static String ENTITY_NULL_STRING = "[NULL]";
public static class OPERATION { public static class OPERATION {
public static String INSERT_OR_UPDATE = "INSERT_OR_UPDATE"; public static String INSERT_OR_UPDATE = "INSERT_OR_UPDATE";
public static String INSERT = "INSERT"; public static String INSERT = "INSERT";

View File

@ -1,13 +1,13 @@
package it.integry.integrywmsnative.core.report; package it.integry.integrywmsnative.core.report;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum; import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
public class ReportManager { public class ReportManager {
public static void getRightReportNameByGestione(GestioneEnum gestione, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) {
public static void getReportNameLUFromGestione(GestioneEnum gestione, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) {
if(gestione != null){ if(gestione != null){
@ -34,7 +34,7 @@ public class ReportManager {
} }
public static String getRightReportNameByGestione(GestioneEnum gestione) { public static String getReportNameLUFromGestione(GestioneEnum gestione) {
if(gestione != null){ if(gestione != null){

View File

@ -638,7 +638,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() { Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {
}.getType(); }.getType();
SystemRESTConsumer.<ArrayList<MtbColt>>processSql(query, typeOfObjectsList, data -> { SystemRESTConsumer.<ArrayList<MtbColt>>processSqlStatic(query, typeOfObjectsList, data -> {
onComplete.run(data != null && data.size() > 0); onComplete.run(data != null && data.size() > 0);
}, onFailed); }, onFailed);
} }
@ -666,7 +666,7 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
public static void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs<Exception> onFailed) { public static void creaRettificaColloStatic(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs<Exception> onFailed) {
MtbColr sourceMtbColr = (MtbColr) sourceMtbColrOriginal.clone(); MtbColr sourceMtbColr = (MtbColr) sourceMtbColrOriginal.clone();
sourceMtbColr.setMtbPartitaMag(null); sourceMtbColr.setMtbPartitaMag(null);
sourceMtbColr.setMtbAart(null); sourceMtbColr.setMtbAart(null);
@ -695,4 +695,10 @@ public class ColliMagazzinoRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void creaRettificaCollo(MtbColr sourceMtbColrOriginal, BigDecimal newNumCnf, BigDecimal newQtaTot, Runnable onComplete, RunnableArgs<Exception> onFailed) {
creaRettificaColloStatic(sourceMtbColrOriginal, newNumCnf, newQtaTot, onComplete, onFailed);
}
} }

View File

@ -7,7 +7,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol; import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
@ -21,7 +20,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
"WHERE cod_tcol = " + UtilityDB.valueToString(codTcol); "WHERE cod_tcol = " + UtilityDB.valueToString(codTcol);
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() { SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() {
@Override @Override
public void onSuccess(List<MtbTCol> values) { public void onSuccess(List<MtbTCol> values) {
if(onComplete != null) { if(onComplete != null) {
@ -42,7 +41,7 @@ public class MagazzinoRESTConsumer extends _BaseRESTConsumer {
"FROM mtb_tcol "; "FROM mtb_tcol ";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbTCol>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() { SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbTCol>>() {
@Override @Override
public void onSuccess(List<MtbTCol> values) { public void onSuccess(List<MtbTCol> values) {
if(onComplete != null) { if(onComplete != null) {

View File

@ -48,7 +48,7 @@ public class PosizioniRESTConsumer extends _BaseRESTConsumer{
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override @Override
public void onSuccess(List<MtbColt> value) { public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -44,8 +44,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public void getAvailablePrinters(String codMdep, final RunnableArgs<List<String>> onComplete, final RunnableArgs<Exception> onFailed) {
getAvailablePrintersStatic(codMdep, onComplete, onFailed);
}
public static void getAvailablePrintersStatic(String codMdep, final ISimpleOperationCallback<List<String>> callback) { public static void getAvailablePrintersStatic(String codMdep, final RunnableArgs<List<String>> onComplete, RunnableArgs<Exception> onFailed) {
PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class); PrinterRESTConsumerService printerService = RESTBuilder.getService(PrinterRESTConsumerService.class);
printerService.getAvailablePrinters(codMdep).enqueue(new Callback<ServiceRESTResponse<List<String>>>() { printerService.getAvailablePrinters(codMdep).enqueue(new Callback<ServiceRESTResponse<List<String>>>() {
@ -54,12 +57,12 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback<List<String>>() { analyzeAnswer(response, "GetAvailablePrinters", new ISimpleOperationCallback<List<String>>() {
@Override @Override
public void onSuccess(List<String> value) { public void onSuccess(List<String> value) {
callback.onSuccess(value != null ? Stream.of(value).withoutNulls().toList() : null); onComplete.run(value != null ? Stream.of(value).withoutNulls().toList() : null);
} }
@Override @Override
public void onFailed(Exception ex) { public void onFailed(Exception ex) {
callback.onFailed(ex); onFailed.run(ex);
} }
}); });
} }
@ -68,7 +71,7 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) { public void onFailure(Call<ServiceRESTResponse<List<String>>> call, Throwable t) {
Log.e("GetAvailablePrinters", t.toString()); Log.e("GetAvailablePrinters", t.toString());
UtilityLogger.errorMe(new Exception(t)); UtilityLogger.errorMe(new Exception(t));
callback.onFailed(new Exception(t)); onFailed.run(new Exception(t));
} }
}); });
} }
@ -98,7 +101,11 @@ public class PrinterRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) { public void printCollo(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
printColloStatic(printerName, testataColloToPrint, quantity, reportName, onComplete, onFailed);
}
public static void printColloStatic(String printerName, MtbColt testataColloToPrint, int quantity, String reportName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
if(BuildConfig.DEBUG) { if(BuildConfig.DEBUG) {
onComplete.run(); onComplete.run();

View File

@ -14,6 +14,8 @@ import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Singleton;
import it.integry.integrywmsnative.BuildConfig; import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.CommonConst; import it.integry.integrywmsnative.core.CommonConst;
import it.integry.integrywmsnative.core.rest.RESTBuilder; import it.integry.integrywmsnative.core.rest.RESTBuilder;
@ -30,9 +32,10 @@ import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@Singleton
public class SystemRESTConsumer extends _BaseRESTConsumer { public class SystemRESTConsumer extends _BaseRESTConsumer {
public static <T> void processSql(String nativeSql, final Type clazz, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) { public static <T> void processSqlStatic(String nativeSql, final Type clazz, RunnableArgs<T> onComplete, RunnableArgs<Exception> onFailed) {
NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO();
nativeSqlDTO.nativeSql = nativeSql; nativeSqlDTO.nativeSql = nativeSql;
@ -69,9 +72,17 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
}); });
} }
public static <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) { public static <T> void processSqlStatic(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
processSql(nativeSql, clazz, data -> { processSqlStatic(nativeSql, clazz, data -> {
callback.onSuccess((T) data);
}, callback::onFailed);
}
public <T> void processSql(String nativeSql, final Type clazz, final ISimpleOperationCallback<T> callback) {
processSqlStatic(nativeSql, clazz, data -> {
callback.onSuccess((T) data); callback.onSuccess((T) data);
}, callback::onFailed); }, callback::onFailed);
@ -180,7 +191,7 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
String sql = "SELECT TOP 1 * FROM azienda"; String sql = "SELECT TOP 1 * FROM azienda";
Type typeOfObjectsList = new TypeToken<ArrayList<Azienda>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<Azienda>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<List<Azienda>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<List<Azienda>>() {
@Override @Override
public void onSuccess(List<Azienda> value) { public void onSuccess(List<Azienda> value) {
if(onComplete != null) onComplete.run(value.get(0)); if(onComplete != null) onComplete.run(value.get(0));

View File

@ -49,14 +49,28 @@ public class UtilityBarcode {
return isPosizione; return isPosizione;
} }
public static boolean isEtichettaArt(BarcodeScanDTO barcodeScanDTO) {
return isEan8(barcodeScanDTO) || isEan13(barcodeScanDTO) || isUPCA(barcodeScanDTO);
}
public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) { public static boolean isEanPeso(BarcodeScanDTO barcodeScanDTO) {
return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2"); return (isEtichetta128(barcodeScanDTO) || isEan13(barcodeScanDTO)) && barcodeScanDTO.getStringValue().startsWith("2");
} }
public static boolean isEan8(BarcodeScanDTO barcodeScanDTO) {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN8;
}
public static boolean isEan13(BarcodeScanDTO barcodeScanDTO) { public static boolean isEan13(BarcodeScanDTO barcodeScanDTO) {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN13; return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.EAN13;
} }
public static boolean isUPCA(BarcodeScanDTO barcodeScanDTO) {
return barcodeScanDTO != null && barcodeScanDTO.getType() == BarcodeType.UPCA;
}
public static Integer getNumColloFromULAnonima(String barcode) { public static Integer getNumColloFromULAnonima(String barcode) {

View File

@ -2,7 +2,7 @@ package it.integry.integrywmsnative.gest.accettazione_ordine_inevaso;
import android.content.Intent; import android.content.Intent;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -113,7 +113,7 @@ public class AccettazioneOrdineInevasoActivity extends BaseActivity {
public void startListaBancaliRegistratiActivity(ArrayList<MtbColt> mtbColts){ public void startListaBancaliRegistratiActivity(ArrayList<MtbColt> mtbColts){
Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO)); Intent myIntent = ListaBancaliActivity.createIntent(this, mtbColts, false, PrinterRESTConsumer.Type.SECONDARIA, ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO));
this.startActivityForResult(myIntent, PICK_UL_REQUEST); this.startActivityForResult(myIntent, PICK_UL_REQUEST);
} }

View File

@ -59,7 +59,7 @@ public class OrdineAccettazioneInevasoRESTConsumerService {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override @Override
public void onSuccess(List<MtbColt> value) { public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -598,9 +598,9 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
try { try {
ReportManager.getRightReportNameByGestione(GestioneEnum.ACQUISTO, reportName -> { ReportManager.getReportNameLUFromGestione(GestioneEnum.ACQUISTO, reportName -> {
PrinterRESTConsumer.printCollo( PrinterRESTConsumer.printColloStatic(
value.get(0), value.get(0),
currentMtbColt, currentMtbColt,
1, reportName, () -> { 1, reportName, () -> {
@ -835,7 +835,7 @@ public class AccettazioneOrdineAccettazioneInevasoViewModel implements IOnColloC
MtbColt cloneMtbColt = (MtbColt) getColloRef().clone(); MtbColt cloneMtbColt = (MtbColt) getColloRef().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList<>());
cloneMtbColt.getMtbColr().add(mtbColr); cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() { ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {

View File

@ -105,11 +105,11 @@ public class ContenutoBancaleViewModel implements IRecyclerItemClicked<MtbColr>
if(value.size() > 0) { if(value.size() > 0) {
try { try {
ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> {
reportName = mReportName != null ? mReportName : reportName; reportName = mReportName != null ? mReportName : reportName;
PrinterRESTConsumer.printCollo(value.get(0), PrinterRESTConsumer.printColloStatic(value.get(0),
mtbColt.get(), mtbColt.get(),
1, 1,
reportName, reportName,

View File

@ -4,7 +4,6 @@ import javax.inject.Singleton;
import dagger.Component; import dagger.Component;
import it.integry.integrywmsnative.MainApplicationComponent; import it.integry.integrywmsnative.MainApplicationComponent;
import it.integry.integrywmsnative.gest.spedizione_new.SpedizioneActivity;
@Singleton @Singleton
@Component(modules = {PickingLiberoModule.class}, dependencies = {MainApplicationComponent.class}) @Component(modules = {PickingLiberoModule.class}, dependencies = {MainApplicationComponent.class})

View File

@ -4,17 +4,15 @@ package it.integry.integrywmsnative.gest.picking_libero;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableList;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableList;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
@ -158,9 +156,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
private void initRecyclerView() { private void initRecyclerView() {
mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false); mBindings.pickingLiberoMainList.setNestedScrollingEnabled(false);
mBindings.pickingLiberoMainList.setHasFixedSize(true); mBindings.pickingLiberoMainList.setHasFixedSize(true);
mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity())); mBindings.pickingLiberoMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL); DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
@ -169,13 +165,13 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
} }
private void initAdapter() { private void initAdapter() {
mAdapter = new PickingLiberoListAdapter(getActivity(), mViewModel.getCurrentMtbColt().getMtbColr()); mAdapter = new PickingLiberoListAdapter(mViewModel.getCurrentMtbColt().getMtbColr());
mBindings.pickingLiberoMainList.setAdapter(mAdapter); mBindings.pickingLiberoMainList.setAdapter(mAdapter);
} }
private void destroyAdapter() { private void destroyAdapter() {
mAdapter = null;
mBindings.pickingLiberoMainList.setAdapter(null); mBindings.pickingLiberoMainList.setAdapter(null);
mAdapter = null;
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> { private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
@ -218,7 +214,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment,
@Override @Override
public void onDestroyView() { public void onDestroyView() {
// mViewModel.closeLU(); if(thereIsAnOpenedUL.get()) mViewModel.closeLU();
BarcodeManager.removeCallback(barcodeScannerIstanceID); BarcodeManager.removeCallback(barcodeScannerIstanceID);
if (mOnPreDestroy != null) mOnPreDestroy.run(); if (mOnPreDestroy != null) mOnPreDestroy.run();
super.onDestroyView(); super.onDestroyView();

View File

@ -447,7 +447,7 @@ public class PickingLiberoViewModel {
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList<>());
cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone());
if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) { if (UtilityBigDecimal.equalsTo(numCnf, BigDecimal.ZERO) && UtilityBigDecimal.equalsTo(qtaTot, BigDecimal.ZERO)) {
@ -590,16 +590,6 @@ public class PickingLiberoViewModel {
void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort); void onArtSelectionRequest(List<MtbColr> mtbColrsToPick, RunnableArgs<List<MtbColr>> onComplete, Runnable onAbort);
/*void onLUPrintRequest(RunnableArgs<Boolean> onComplete);
void onLUPrintError(Exception ex, Runnable onComplete);
void onFilterApplied(String newValue);
void onFilterRemoved();
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
*/
void onItemDispatched(PickingObjectDTO pickingObjectDTO, void onItemDispatched(PickingObjectDTO pickingObjectDTO,
MtbAart mtbAart, MtbAart mtbAart,
BigDecimal initialNumCnf, BigDecimal initialNumCnf,

View File

@ -1,34 +1,30 @@
package it.integry.integrywmsnative.gest.picking_libero.core; package it.integry.integrywmsnative.gest.picking_libero.core;
import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.OnListGeneralChangedCallback; import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityResources; import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ListaPickingLiberoListModelBinding; import it.integry.integrywmsnative.databinding.ListaPickingLiberoListModelBinding;
import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFragmentLUContentListAdapter;
public class PickingLiberoListAdapter extends RecyclerView.Adapter<PickingLiberoListAdapter.ViewHolder>{ public class PickingLiberoListAdapter extends ExtendedRecyclerView<MtbColr, PickingLiberoListAdapter.ViewHolder> {
private Context mContext;
private ArrayList<MtbColr> mDataset;
private OnItemClickListener mOnItemClickListener; private OnItemClickListener mOnItemClickListener;
public class ViewHolder extends RecyclerView.ViewHolder { public PickingLiberoListAdapter(ObservableArrayList<MtbColr> myDataset) {
super(myDataset);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaPickingLiberoListModelBinding mViewDataBinding; protected ListaPickingLiberoListModelBinding mViewDataBinding;
@ -59,24 +55,12 @@ public class PickingLiberoListAdapter extends RecyclerView.Adapter<PickingLibero
public PickingLiberoListAdapter(Context context, ObservableArrayList<MtbColr> myDataset) {
mContext = context;
mDataset = myDataset;
myDataset.addOnListChangedCallback(new OnListGeneralChangedCallback() {
@Override
public void onChanged(ObservableList sender) {
notifyDataSetChanged();
}
});
}
@Override @Override
public PickingLiberoListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public PickingLiberoListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view // create a new view
ListaPickingLiberoListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_picking_libero_list_model, parent, false); ListaPickingLiberoListModelBinding viewDataBinding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.lista_picking_libero_list_model, parent, false);
return new PickingLiberoListAdapter.ViewHolder(viewDataBinding); return new ViewHolder(viewDataBinding);
} }
@Override @Override
@ -93,16 +77,6 @@ public class PickingLiberoListAdapter extends RecyclerView.Adapter<PickingLibero
holder.mViewDataBinding.executePendingBindings(); holder.mViewDataBinding.executePendingBindings();
} }
@Override
public void onViewRecycled(PickingLiberoListAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
}
@Override
public int getItemCount() {
return mDataset.size();
}
public PickingLiberoListAdapter setOnItemClickListener(OnItemClickListener onItemClickListener) { public PickingLiberoListAdapter setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.mOnItemClickListener = onItemClickListener; this.mOnItemClickListener = onItemClickListener;

View File

@ -320,7 +320,7 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) currentMtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList<>());
cloneMtbColt.getMtbColr().add(mtbColr); cloneMtbColt.getMtbColr().add(mtbColr);
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> { ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, value -> {
@ -468,9 +468,9 @@ public class PickingResiActivity extends BaseActivity implements IOnColloClosedC
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printCollo( PrinterRESTConsumer.printColloStatic(
printerName, printerName,
mtbColtToPrint, mtbColtToPrint,
1, 1,

View File

@ -181,7 +181,7 @@ public class ProdOrdineLavorazioneHelper {
baseSql += "( " + whereCond + ")"; baseSql += "( " + whereCond + ")";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() { SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override @Override
public void onSuccess(List<MtbColt> value) { public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -331,9 +331,9 @@ public class ProdRecuperoMaterialeViewModel {
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printCollo( PrinterRESTConsumer.printColloStatic(
printerName, printerName,
mtbColtToPrint, mtbColtToPrint,
1, 1,

View File

@ -0,0 +1,14 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze;
import javax.inject.Singleton;
import dagger.Component;
import it.integry.integrywmsnative.MainApplicationComponent;
@Singleton
@Component(modules = {RettificaGiacenzeModule.class}, dependencies = {MainApplicationComponent.class})
public interface RettificaGiacenzeComponent {
void inject(RettificaGiacenzeFragment rettificaGiacenzeFragment);
}

View File

@ -1,37 +1,87 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze; package it.integry.integrywmsnative.gest.rettifica_giacenze;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.content.res.Resources;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle; import android.os.Bundle;
import androidx.fragment.app.Fragment; import android.text.SpannableString;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import com.google.android.material.bottomsheet.BottomSheetBehavior; import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.textfield.TextInputLayout;
import com.tfb.fbtoast.FBToast;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO; import it.integry.integrywmsnative.core.barcode_reader.BarcodeCallbackDTO;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.IPoppableActivity;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment; import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeHelper; import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.AutoCompleteFornitoreAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel; import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.RettificaGiacenzeMainListAdapter;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.spedizione_new.exceptions.InvalidPesoKGException;
import it.integry.integrywmsnative.gest.spedizione_new.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO;
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment { public class RettificaGiacenzeFragment extends Fragment implements ITitledFragment, RettificaGiacenzeViewModelNEW.Listener, BottomSheetMtbColrEditView.Listener {
private RettificaGiacenzeHelper mHelper;
private FragmentMainRettificaGiacenzeBinding mBinding = null; private FragmentMainRettificaGiacenzeBinding mBinding = null;
private RettificaGiacenzeViewModel mRettificaGiacenzeViewModel = null; @Inject
RettificaGiacenzeViewModelNEW mViewModel;
public BindableBoolean thereIsAnOpenedUL = new BindableBoolean(false);
public BindableBoolean thereIsntAnOpenedUL = new BindableBoolean(false);
public ObservableField<MtbColt> currentMtbColtObs = new ObservableField<>();
private RettificaGiacenzeMainListAdapter mAdapter;
private int barcodeScannerIstanceID = -1; private int barcodeScannerIstanceID = -1;
private Dialog mCurrentProgress;
public RettificaGiacenzeFragment() { public RettificaGiacenzeFragment() {
// Required empty public constructor // Required empty public constructor
} }
@ -52,32 +102,82 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
Bundle savedInstanceState) { Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false); mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_main_rettifica_giacenze, container, false);
mRettificaGiacenzeViewModel = new RettificaGiacenzeViewModel();
RettificaGiacenzeComponent rettificaGiacenzeComponent = DaggerRettificaGiacenzeComponent.builder()
.mainApplicationModule(MainApplication.appModule)
.mainApplicationComponent(MainApplication.appComponent)
.build();
rettificaGiacenzeComponent.inject(this);
mViewModel.setListener(this);
mBinding.setLifecycleOwner(this);
mBinding.setView(this); mBinding.setView(this);
mBinding.setViewmodel(mRettificaGiacenzeViewModel); mBinding.setViewmodel(mViewModel);
init();
this.initVars();
this.initBarcodeReader();
this.initBottomSheet();
this.initRecyclerView();
this.init();
return mBinding.getRoot(); return mBinding.getRoot();
} }
private void init() {
mHelper = new RettificaGiacenzeHelper(getActivity());
mRettificaGiacenzeViewModel.init(getActivity(), mBinding, mHelper);
private void initVars() {
thereIsAnOpenedUL.addOnPropertyChangedCallback(() -> {
thereIsntAnOpenedUL.set(!thereIsAnOpenedUL.get());
});
}
private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO() barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
.setOnScanSuccessfull(mRettificaGiacenzeViewModel.onScanSuccessfull) .setOnScanSuccessfull(onScanSuccessful)
.setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false))); .setOnScanFailed(ex -> UtilityExceptions.defaultException(getActivity(), ex, false)));
}
mHelper.loadListaFornitori(listaFornitori -> { private void initBottomSheet() {
mRettificaGiacenzeViewModel.setupSearchFornitori(listaFornitori); mBinding.bottomSheetMtbColrEdit.setListener(this);
mBinding.bottomSheetMtbColrEdit.init(mBinding.bottomSheetMtbColrEdit, mBinding.bottomSheetMtbColrEditBackground);
}
private void initRecyclerView() {
mBinding.rettificaGiacenzeMainList.setNestedScrollingEnabled(false);
mBinding.rettificaGiacenzeMainList.setHasFixedSize(true);
mBinding.rettificaGiacenzeMainList.setLayoutManager(new LinearLayoutManager(getActivity()));
DividerItemDecoration itemDecorator = new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.divider));
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
}
private void initAdapter() {
mAdapter = new RettificaGiacenzeMainListAdapter(mViewModel.getCurrentMtbColt().getMtbColr());
mAdapter.setEmptyView(mBinding.rettificaGiacenzeEmptyView);
this.mAdapter.setOnItemClickListener(clickedMtbColr -> {
mBinding.bottomSheetMtbColrEdit.setMtbColr(clickedMtbColr);
mBinding.bottomSheetMtbColrEdit.expand();
}); });
mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter);
}
private void destroyAdapter() {
mBinding.rettificaGiacenzeMainList.setAdapter(null);
mAdapter = null;
}
private void init() {
mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> { mBinding.autoCompleteFornitori.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn(); setUIToForn();
}); });
mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> { mBinding.inputCodArtDescrForn.setOnFocusChangeListener((v, hasFocus) -> {
setUIToForn(); setUIToForn();
}); });
@ -86,7 +186,10 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
setUIToIntArt(); setUIToIntArt();
}); });
mRettificaGiacenzeViewModel.openLU(); mViewModel.init(
SettingsManager.i().getUser().getFullname(),
SettingsManager.iDB().getDefaultCausaleRettificaGiacenze(),
SettingsManager.i().getUserSession().getDepo().getCodMdep());
} }
@ -97,7 +200,7 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
@Override @Override
public void onDestroyView() { public void onDestroyView() {
mRettificaGiacenzeViewModel.closeLU(false, false); mViewModel.closeLU(false);
BarcodeManager.removeCallback(barcodeScannerIstanceID); BarcodeManager.removeCallback(barcodeScannerIstanceID);
super.onDestroyView(); super.onDestroyView();
} }
@ -108,6 +211,32 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
} }
private RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
BarcodeManager.disable();
this.openProgress();
this.mViewModel.processBarcodeDTO(data, () -> {
BarcodeManager.enable();
this.closeProgress();
});
};
private void openProgress() {
if (this.mCurrentProgress == null) {
this.mCurrentProgress = UtilityProgress.createDefaultProgressDialog(getActivity());
}
}
private void closeProgress() {
if (mCurrentProgress != null) {
mCurrentProgress.dismiss();
mCurrentProgress = null;
}
}
public void setUIToForn() { public void setUIToForn() {
mBinding.rettificaGiacenzeFornCheckBox.setChecked(true); mBinding.rettificaGiacenzeFornCheckBox.setChecked(true);
@ -117,8 +246,6 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.rettificaGiacenzeArtIntCheckBox.setChecked(false); mBinding.rettificaGiacenzeArtIntCheckBox.setChecked(false);
mBinding.rettificaGiacenzeArtIntLayout.setBackground(null); mBinding.rettificaGiacenzeArtIntLayout.setBackground(null);
mBinding.rettificaGiacenzeArtIntLayout.setBackgroundTintList(null); mBinding.rettificaGiacenzeArtIntLayout.setBackgroundTintList(null);
} }
@ -130,7 +257,261 @@ public class RettificaGiacenzeFragment extends Fragment implements ITitledFragme
mBinding.rettificaGiacenzeFornCheckBox.setChecked(false); mBinding.rettificaGiacenzeFornCheckBox.setChecked(false);
mBinding.rettificaGiacenzeFornLayout.setBackground(null); mBinding.rettificaGiacenzeFornLayout.setBackground(null);
mBinding.rettificaGiacenzeFornLayout.setBackgroundTintList(null); mBinding.rettificaGiacenzeFornLayout.setBackgroundTintList(null);
}
@Override
public void onLoadingStarted() {
BarcodeManager.disable();
this.openProgress();
}
@Override
public void onLoadingEnded() {
this.closeProgress();
BarcodeManager.enable();
}
@Override
public void onFornitoriLoaded(ArrayList<FornitoreDTO> fornitoriList) {
AutoCompleteFornitoreAdapter autoCompleteFornitoreAdapter = new AutoCompleteFornitoreAdapter(getActivity(), fornitoriList);
mBinding.autoCompleteFornitori.setAdapter(autoCompleteFornitoreAdapter);
mBinding.autoCompleteFornitori.setDropDownWidth(getActivity().getResources().getDisplayMetrics().widthPixels);
mBinding.inputCodArtDescrForn.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
resetAllError();
if (UtilityString.isNullOrEmpty(mBinding.autoCompleteFornitori.getText().toString())) {
setError(mBinding.autoCompleteFornitoriLayout, getActivity().getResources().getText(R.string.error).toString());
return true;
}
if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrForn.getText().toString())) {
setError(mBinding.layoutCodArtDescrForn, getActivity().getResources().getText(R.string.error).toString());
return true;
}
mViewModel.searchArtFor(
mBinding.autoCompleteFornitori.getText().toString(),
mBinding.inputCodArtDescrForn.getText().toString());
return true;
}
return false;
});
mBinding.inputCodArtDescrInt.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_DONE) {
resetAllError();
if (UtilityString.isNullOrEmpty(mBinding.inputCodArtDescrInt.getText().toString())) {
setError(mBinding.layoutCodArtDescrInt, getActivity().getResources().getText(R.string.error).toString());
return true;
}
mViewModel.searchArtInt(mBinding.inputCodArtDescrInt.getText().toString(), null);
return true;
}
return false;
});
}
@Override
public void onArtListLoaded(ArrayList<MtbAart> artList) {
DialogChooseArtFromListaArts.make(getActivity(), artList, mtbAart -> mViewModel.dispatchArt(mtbAart, null)).show();
}
@Override
public void onLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete) {
DialogScanOrCreateLU.make(getActivity(), true, false, (mtbColt, created) -> {
if (mtbColt == null) {
((IPoppableActivity) getActivity()).pop();
} else {
onComplete.run(mtbColt, created);
}
}).show();
}
@Override
public void onLUOpened(MtbColt mtbColt) {
initAdapter();
this.currentMtbColtObs.set(mtbColt);
thereIsAnOpenedUL.set(true);
}
@Override
public void onLUClosed() {
destroyAdapter();
this.currentMtbColtObs.set(null);
thereIsAnOpenedUL.set(false);
if(getActivity() != null) ((IPoppableActivity) getActivity()).pop();
}
@Override
public void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
String text = getResources().getString(R.string.alert_delete_mtb_colr);
DialogSimpleMessageHelper.makeWarningDialog(getActivity(),
new SpannableString(text),
null,
() -> onComplete.run(true),
() -> onComplete.run(false)
).show();
}
@Override
public void onError(Exception ex) {
this.closeProgress();
if (ex instanceof InvalidPesoKGException) {
UtilityToast.showToast(ex.getMessage());
} else {
UtilityExceptions.defaultException(getActivity(), ex, mCurrentProgress);
}
BarcodeManager.enable();
}
@Override
public void onItemDispatched(
PickingObjectDTO pickingObjectDTO,
MtbAart mtbAart,
BigDecimal initialNumCnf,
BigDecimal initialQtaCnf,
BigDecimal initialQtaTot,
BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken,
String partitaMag,
Date dataScad,
boolean canOverflowOrderQuantity,
boolean canPartitaMagBeChanged,
boolean canLUBeClosed,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
DialogInputQuantityV2DTO dialogInputQuantityV2DTO = new DialogInputQuantityV2DTO()
.setMtbAart(mtbAart)
.setInitialNumCnf(initialNumCnf)
.setInitialQtaCnf(initialQtaCnf)
.setInitialQtaTot(initialQtaTot)
.setTotalQtaToBeTaken(totalQtaToBeTaken)
.setTotalNumCnfToBeTaken(totalNumCnfToBeTaken)
.setQtaCnfToBeTaken(qtaCnfToBeTaken)
.setPartitaMag(partitaMag)
.setDataScad(dataScad)
.setCanOverflowOrderQuantity(canOverflowOrderQuantity)
.setCanPartitaMagBeChanged(canPartitaMagBeChanged)
.setCanLUBeClosed(canLUBeClosed);
DialogInputQuantityV2
.newInstance(dialogInputQuantityV2DTO, (resultDTO, shouldCloseLU) -> {
PickedQuantityDTO pickedQuantityDTO = new PickedQuantityDTO()
.setNumCnf(resultDTO.getNumCnf())
.setQtaCnf(resultDTO.getQtaCnf())
.setQtaTot(resultDTO.getQtaTot())
.setPartitaMag(resultDTO.getPartitaMag())
.setDataScad(resultDTO.getDataScad());
this.openProgress();
onComplete.run(pickedQuantityDTO, shouldCloseLU);
}, () -> {
this.closeProgress();
})
.show(getActivity().getSupportFragmentManager(), "tag");
}
@Override
public void onRowSaved() {
FBToast.successToast(getActivity(), getResources().getString(R.string.data_saved), FBToast.LENGTH_SHORT);
}
private void setError(TextInputLayout textInputLayout, String message) {
textInputLayout.setErrorEnabled(true);
textInputLayout.setError(message);
textInputLayout.setErrorIconDrawable(null);
}
private void resetAllError() {
resetError(mBinding.autoCompleteFornitoriLayout);
resetError(mBinding.layoutCodArtDescrForn);
resetError(mBinding.layoutCodArtDescrInt);
}
private void resetTexts() {
mBinding.inputCodArtDescrForn.setText("");
mBinding.inputCodArtDescrInt.setText("");
}
private void resetError(TextInputLayout textInputLayout) {
textInputLayout.setErrorEnabled(false);
textInputLayout.setError(null);
}
@Override
public void onMtbColrEdit(MtbColr mtbColr) {
this.mViewModel.dispatchRowEdit(mtbColr);
}
@Override
public void onMtbColrDelete(MtbColr mtbColr) {
this.mViewModel.deleteRow(mtbColr);
}
@Override
public void onLUSuccessullyPrinted() {
Resources res = getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageHelper.makeSuccessDialog(getActivity(), res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
}
@Override
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
DialogSimpleMessageHelper.makeInfoDialog(
getActivity(),
getActivity().getResources().getString(R.string.action_print_ul),
new SpannableString(getActivity().getResources().getString(R.string.ask_print_message)),
null,
() -> onComplete.run(true),
() -> onComplete.run(false)).show();
}
@Override
public void onLUPrintError(Exception ex, Runnable onComplete) {
DialogSimpleMessageHelper.makeErrorDialog(
getActivity(),
new SpannableString(ex.getMessage()),
null,
null,
R.string.button_ignore_print,
onComplete).show();
}
@Override
public void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
DialogYesNo.make(getActivity(), "Posiziona UL", "Vuoi cambiare la posizione della UL corrente?", result -> {
switch (result) {
case YES:
DialogAskPositionOfLU.makeBase(getActivity(), mViewModel.getCurrentMtbColt(), false, (status, mtbDepoPosizione) -> {
if (status == DialogConsts.Results.ABORT) {
onComplete.run(false, null);
} else {
if (mtbDepoPosizione != null) {
onComplete.run(true, mtbDepoPosizione);
} else {
onComplete.run(true, null);
}
}
}, this::onError).show();
break;
case NO:
onComplete.run(false, null);
break;
}
}).show();
} }
} }

View File

@ -0,0 +1,36 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import it.integry.integrywmsnative.MainApplicationModule;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.gest.picking_libero.PickingLiberoViewModel;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer;
@Module(includes = {MainApplicationModule.class})
public class RettificaGiacenzeModule {
@Provides
@Singleton
RettificaGiacenzeRESTConsumer providesRettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRESTConsumer) {
return new RettificaGiacenzeRESTConsumer(systemRESTConsumer);
}
@Provides
@Singleton
RettificaGiacenzeViewModelNEW providesRettificaGiacenzeViewModel(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
RettificaGiacenzeRESTConsumer rettificaGiacenzeRESTConsumer) {
return new RettificaGiacenzeViewModelNEW(articoloRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer, barcodeRESTConsumer, rettificaGiacenzeRESTConsumer);
}
}

View File

@ -0,0 +1,741 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze;
import androidx.databinding.ObservableArrayList;
import com.annimon.stream.Stream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.integrywmsnative.core.exception.InvalidLUGestioneException;
import it.integry.integrywmsnative.core.exception.NoArtsFoundException;
import it.integry.integrywmsnative.core.exception.NoPrintersFoundException;
import it.integry.integrywmsnative.core.exception.NoResultFromBarcodeException;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPositionListener;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityBigDecimal;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.gest.spedizione_new.model.PickDataDTO;
import it.integry.integrywmsnative.gest.spedizione_new.model.PickedQuantityDTO;
import it.integry.integrywmsnative.gest.spedizione_new.model.PickingObjectDTO;
public class RettificaGiacenzeViewModelNEW {
public MtbColt mCurrentMtbColt = null;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final PrinterRESTConsumer mPrinterRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final RettificaGiacenzeRESTConsumer mRettificaGiacenzeRESTConsumer;
private RettificaGiacenzeViewModelNEW.Listener mListener;
private String mCurrentUser;
private String mDefaultCausale;
private String mCurrentCodMdep;
private boolean mIsCreatedLU;
@Inject
public RettificaGiacenzeViewModelNEW(ArticoloRESTConsumer articoloRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
RettificaGiacenzeRESTConsumer rettificaGiacenzeRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mPrinterRESTConsumer = printerRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mRettificaGiacenzeRESTConsumer = rettificaGiacenzeRESTConsumer;
}
public void init(String currentUser, String defaultCausale, String currentCodMdep) {
this.mCurrentUser = currentUser;
this.mDefaultCausale = defaultCausale;
this.mCurrentCodMdep = currentCodMdep;
this.sendOnLoadingStarted();
this.mRettificaGiacenzeRESTConsumer.loadListaFornitori(fornitori -> {
this.sendOnFornitoriListLoaded(fornitori);
this.sendOnLoadingEnded();
this.sendOnLUOpenRequest((mtbColt, created) -> {
if(mtbColt.getGestioneEnum() == GestioneEnum.ACQUISTO) {
this.sendError(new InvalidLUGestioneException(GestioneEnum.ACQUISTO));
} else {
this.mCurrentMtbColt = mtbColt;
this.mIsCreatedLU = created;
this.sendLUOpened(mtbColt);
}
});
}, this::sendError);
}
public RettificaGiacenzeViewModelNEW setListener(RettificaGiacenzeViewModelNEW.Listener listener) {
this.mListener = listener;
return this;
}
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
// if (UtilityBarcode.isEanPeso(barcodeScanDTO)) {
// //Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
// this.executeEtichettaEanPeso(barcodeScanDTO, onComplete);
//
// } else
if (UtilityBarcode.isEtichetta128(barcodeScanDTO)) {
//Cerco tramite etichetta ean 128 (che può indicarmi un articolo o una UL)
this.executeEtichettaEan128(barcodeScanDTO, onComplete);
} else if(UtilityBarcode.isEtichettaArt(barcodeScanDTO)){
this.searchArtInt(barcodeScanDTO.getStringValue(), onComplete);
} else {
onComplete.run();
}
}
private void executeEtichettaEan128(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
mBarcodeRESTConsumer.decodeEan128(barcodeScanDTO, ean128Model -> {
String barcodeProd = null;
if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) barcodeProd = ean128Model.Sscc;
if (!UtilityString.isNullOrEmpty(ean128Model.Gtin)) barcodeProd = ean128Model.Gtin;
if (!UtilityString.isNullOrEmpty(ean128Model.Content))
barcodeProd = ean128Model.Content;
if (!UtilityString.isNullOrEmpty(barcodeProd)) {
if (barcodeProd.startsWith("0") || barcodeProd.startsWith("9")) {
barcodeProd = barcodeProd.substring(1);
}
PickDataDTO pickDataDTO = PickDataDTO.fromEan128(ean128Model);
this.loadArticolo(barcodeProd, pickDataDTO, onComplete);
} else {
//EAN 128 non completo o comunque mancano i riferimenti al prodotto
onComplete.run();
}
}, this::sendError);
}
private void loadArticolo(String barcodeProd, PickDataDTO pickData, Runnable onComplete) {
if (barcodeProd.length() == 14) {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
}
this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if(onComplete != null) onComplete.run();
if (mtbAartList != null && mtbAartList.size() > 0) {
this.dispatchArt(mtbAartList.get(0), pickData);
} else {
this.sendError(new NoResultFromBarcodeException());
}
}, this::sendError);
}
public void searchArtFor(String codAlis, String queryText) {
this.sendOnLoadingStarted();
mRettificaGiacenzeRESTConsumer.searchArtForn(codAlis, queryText, listaArts -> {
this.sendOnLoadingEnded();
List<MtbAart> mtbAarts = Stream.of(listaArts).map(x -> (MtbAart) x).toList();
dispatchArts(mtbAarts);
}, this::sendError);
}
public void searchArtInt(String queryText, Runnable onComplete) {
this.sendOnLoadingStarted();
mRettificaGiacenzeRESTConsumer.searchArtInt(queryText, listaArts -> {
this.sendOnLoadingEnded();
dispatchArts(listaArts);
if(onComplete != null) onComplete.run();
}, this::sendError);
}
private void dispatchArts(List<MtbAart> artsList) {
if (artsList == null || artsList.size() == 0) {
this.sendError(new NoArtsFoundException());
return;
}
if (artsList.size() == 1) {
dispatchArt(artsList.get(0), null);
} else {
this.sendOnArtListLoaded(new ArrayList<>(artsList));
}
}
public void dispatchArt(MtbAart mtbAart, PickDataDTO pickDataDTO) {
PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
.setMtbAart(mtbAart)
.setTempPickData(pickDataDTO);
BigDecimal numCnfDaPrelevare = null;
BigDecimal qtaColDaPrelevare = null;
BigDecimal qtaCnfDaPrelevare = null;
BigDecimal initialNumCnf = null;
BigDecimal initialQtaCnf = null;
BigDecimal initialQtaTot = null;
String partitaMag = null;
Date dataScad = null;
boolean canPartitaMagBeChanged = true;
if (pickingObjectDTO.getTempPickData() != null && pickingObjectDTO.getTempPickData().getManualPickDTO() != null) {
//Oppure le info del barcode scansionato
PickDataDTO.ManualPickDTO manualPickDTO = pickingObjectDTO.getTempPickData().getManualPickDTO();
qtaColDaPrelevare = manualPickDTO.getQtaTot();
numCnfDaPrelevare = manualPickDTO.getNumCnf();
if (mtbAart.isFlagQtaCnfFissaBoolean()) {
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
} else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) {
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
}
if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) {
numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf());
qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare);
} else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) {
qtaCnfDaPrelevare = mtbAart.getQtaCnf();
qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare);
}
if (manualPickDTO.getMtbPartitaMag() != null) {
partitaMag = manualPickDTO.getMtbPartitaMag().getPartitaMag();
dataScad = manualPickDTO.getMtbPartitaMag().getDataScadD();
canPartitaMagBeChanged = false;
}
} else {
initialNumCnf = BigDecimal.ONE;
initialQtaCnf = mtbAart.getQtaCnf();
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
}
if (numCnfDaPrelevare == null && qtaColDaPrelevare == null && initialNumCnf == null && initialQtaTot == null) {
initialNumCnf = BigDecimal.ONE;
initialQtaCnf = mtbAart.getQtaCnf();
initialQtaTot = UtilityBigDecimal.multiply(initialNumCnf, initialQtaCnf);
}
this.sendOnItemDispatched(
pickingObjectDTO,
pickingObjectDTO.getMtbAart(),
initialNumCnf,
initialQtaCnf,
initialQtaTot,
qtaColDaPrelevare,
numCnfDaPrelevare,
qtaCnfDaPrelevare,
partitaMag,
dataScad,
false,
canPartitaMagBeChanged,
true,
(pickedQuantityDTO, shouldCloseLU) -> {
this.saveNewRow(pickingObjectDTO,
pickedQuantityDTO.getNumCnf(),
pickedQuantityDTO.getQtaCnf(),
pickedQuantityDTO.getQtaTot(),
pickedQuantityDTO.getPartitaMag(),
pickedQuantityDTO.getDataScad(),
shouldCloseLU);
});
}
public void saveNewRow(PickingObjectDTO pickingObjectDTO, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
this.sendOnLoadingStarted();
final MtbColr mtbColr = new MtbColr()
.setCodMart(pickingObjectDTO.getMtbAart().getCodMart())
.setPartitaMag(partitaMag)
.setDataScadPartita(dataScad)
.setDescrizione(pickingObjectDTO.getMtbAart().getDescrizioneEstesa())
.setDatetimeRow(UtilityDate.getDateInstance())
.setCausale(MtbColr.Causale.RETTIFICA)
.setUtente(mCurrentUser);
mtbColr.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
if (!mIsCreatedLU) {
mtbColr
.setDataCollo(mCurrentMtbColt.getDataColloS())
.setNumCollo(mCurrentMtbColt.getNumCollo())
.setGestione(mCurrentMtbColt.getGestione())
.setSerCollo(mCurrentMtbColt.getSerCollo());
mColliMagazzinoRESTConsumer.creaRettificaCollo(mtbColr,
numCnf,
qtaTot,
() -> {
mtbColr
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
.setMtbAart(pickingObjectDTO.getMtbAart());
mCurrentMtbColt.getMtbColr().add(mtbColr);
this.sendOnRowSaved();
this.sendOnLoadingEnded();
if (shouldCloseLU) closeLU(false);
}, this::sendError);
} else {
mtbColr
.setQtaCol(qtaTot)
.setQtaCnf(qtaCnf)
.setNumCnf(numCnf);
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList<>());
cloneMtbColt.getMtbColr().add(mtbColr);
mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, value -> {
mtbColr
.setDataCollo(value.getDataColloS())
.setNumCollo(value.getNumCollo())
.setGestione(value.getGestione())
.setSerCollo(value.getSerCollo())
.setRiga(value.getMtbColr().get(0).getRiga())
.setUntMis(pickingObjectDTO.getMtbAart().getUntMis())
.setMtbAart(pickingObjectDTO.getMtbAart());
mCurrentMtbColt.getMtbColr().add(mtbColr);
this.sendOnRowSaved();
this.sendOnLoadingEnded();
if (shouldCloseLU) closeLU(false);
}, this::sendError);
}
}
public void closeLU(boolean saveCausale) {
if (mCurrentMtbColt == null) return;
this.sendOnLoadingStarted();
this.mColliMagazzinoRESTConsumer.canLUBeDeleted(mCurrentMtbColt, canBeDeleted -> {
if (canBeDeleted) {
deleteLU(() -> {
this.sendLUClosed();
this.sendOnLoadingEnded();
});
} else {
Runnable saveAction = () -> {
this.mColliMagazzinoRESTConsumer.updateDataFine(
mCurrentMtbColt, () -> {
this.sendLUPositionChangeRequest((shouldChangePosition, mtbDepoPosizione) -> {
if(shouldChangePosition) {
this.savePosizione(mtbDepoPosizione, () -> {
postSaveBehaviour();
});
} else {
postSaveBehaviour();
}
});
}, this::sendError);
};
if (!UtilityString.isNullOrEmpty(mDefaultCausale) && saveCausale) {
this.saveCausaleRettificaGiacenze(saveAction);
} else {
saveAction.run();
}
}
}, this::sendError);
}
private void saveCausaleRettificaGiacenze(Runnable onComplete) {
final MtbCols mtbCols = new MtbCols()
.setCausale(this.mDefaultCausale);
mtbCols.setOperation(CommonModelConsts.OPERATION.INSERT_OR_UPDATE);
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(null);
cloneMtbColt.setMtbCols(new ArrayList<>());
cloneMtbColt.getMtbCols().add(mtbCols);
this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), this::sendError);
}
private void savePosizione(MtbDepoPosizione mtbDepoPosizione, Runnable onComplete) {
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(null);
cloneMtbColt.setPosizione(mtbDepoPosizione != null ? mtbDepoPosizione.getPosizione() : CommonModelConsts.ENTITY_NULL_STRING);
this.mColliMagazzinoRESTConsumer.saveCollo(cloneMtbColt, mtbColt -> onComplete.run(), this::sendError);
}
private void postSaveBehaviour() {
if(!mCurrentMtbColt.getDisablePrint()) {
printLU(() -> {
this.mCurrentMtbColt = null;
this.sendLUClosed();
this.sendOnLoadingEnded();
});
} else {
this.mCurrentMtbColt = null;
this.sendLUClosed();
this.sendOnLoadingEnded();
}
}
private void deleteLU(Runnable onComplete) {
mColliMagazzinoRESTConsumer.deleteCollo(mCurrentMtbColt, () -> {
this.mCurrentMtbColt = null;
if (onComplete != null) onComplete.run();
}, this::sendError);
}
private void printLU(Runnable onComplete) {
this.sendLUPrintRequest(shouldPrint -> {
if(!shouldPrint) {
onComplete.run();
} else {
this.mPrinterRESTConsumer.getAvailablePrinters(this.mCurrentCodMdep, printerList -> {
if (printerList == null || printerList.size() == 0) {
this.sendError(new NoPrintersFoundException());
onComplete.run();
return;
}
String reportName = ReportManager.getReportNameLUFromGestione(mCurrentMtbColt.getGestioneEnum());
this.mPrinterRESTConsumer.printCollo(printerList.get(0), mCurrentMtbColt, 1, reportName, () -> {
this.sendLUSuccessfullyPrinted();
onComplete.run();
}, ex -> this.sendLUPrintError(ex, onComplete));
}, this::sendError);
}
});
}
public void dispatchRowEdit(MtbColr mtbColrToUpdate) {
final PickingObjectDTO pickingObjectDTO = new PickingObjectDTO()
.setMtbAart(mtbColrToUpdate.getMtbAart());
this.sendOnItemDispatched(
pickingObjectDTO,
pickingObjectDTO.getMtbAart(),
mtbColrToUpdate.getNumCnf(),
mtbColrToUpdate.getQtaCnf(),
mtbColrToUpdate.getQtaCol(),
null,
null,
null,
mtbColrToUpdate.getPartitaMag(),
mtbColrToUpdate.getDataScadPartitaD(),
false,
false,
true,
(pickedQuantityDTO, shouldCloseLU) -> {
this.saveEditedRow(mtbColrToUpdate,
pickedQuantityDTO.getNumCnf(),
pickedQuantityDTO.getQtaCnf(),
pickedQuantityDTO.getQtaTot(),
pickedQuantityDTO.getPartitaMag(),
pickedQuantityDTO.getDataScad(),
shouldCloseLU);
});
}
private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
this.sendOnLoadingStarted();
if(!mIsCreatedLU) {
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
mtbColrToUpdate,
numCnf,
qtaTot,
() -> {
mtbColrToUpdate
.setQtaCol(qtaTot)
.setQtaCnf(qtaCnf)
.setNumCnf(numCnf)
.setOperation(CommonModelConsts.OPERATION.NO_OP);
this.sendOnRowSaved();
},
this::sendError
);
} else {
MtbColt mtbColt = new MtbColt()
.setNumCollo(mtbColrToUpdate.getNumCollo())
.setDataCollo(mtbColrToUpdate.getDataColloS())
.setSerCollo(mtbColrToUpdate.getSerCollo())
.setGestione(mtbColrToUpdate.getGestione())
.setMtbColr(new ObservableArrayList<>());
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
final MtbColr mtbColr = (MtbColr) mtbColrToUpdate.clone();
mtbColr.setOperation(CommonModelConsts.OPERATION.UPDATE);
mtbColr
.setNumCnf(numCnf)
.setQtaCnf(qtaCnf)
.setQtaCol(qtaTot)
.setPartitaMag(partitaMag)
.setDataScadPartita(dataScad)
.setUtente(SettingsManager.i().user.fullname)
.setCausale(MtbColr.Causale.RETTIFICA)
.setDatetimeRow(UtilityDate.getDateInstance());
mtbColt.getMtbColr().add(mtbColr);
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
mtbColr.setNumCnf(numCnf)
.setQtaCnf(qtaCnf)
.setQtaCol(qtaTot);
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToUpdate);
this.mCurrentMtbColt.getMtbColr().add(mtbColr);
this.sendOnRowSaved();
this.sendOnLoadingEnded();
}, this::sendError);
}
}
public void deleteRow(MtbColr mtbColrToDelete) {
this.sendMtbColrDeleteRequest(shouldDelete -> {
if (shouldDelete) {
this.sendOnLoadingStarted();
if(mIsCreatedLU) {
MtbColt mtbColt = new MtbColt()
.setNumCollo(mtbColrToDelete.getNumCollo())
.setDataCollo(mtbColrToDelete.getDataColloS())
.setSerCollo(mtbColrToDelete.getSerCollo())
.setGestione(mtbColrToDelete.getGestione())
.setMtbColr(new ObservableArrayList<>());
mtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
MtbColr mtbColr = (MtbColr) mtbColrToDelete.clone();
mtbColr.setOperation(CommonModelConsts.OPERATION.DELETE);
mtbColt.getMtbColr().add(mtbColr);
this.mColliMagazzinoRESTConsumer.saveCollo(mtbColt, (value) -> {
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
this.sendOnRowSaved();
this.sendOnLoadingEnded();
}, this::sendError);
} else {
this.mColliMagazzinoRESTConsumer.creaRettificaCollo(
mtbColrToDelete,
BigDecimal.ZERO,
BigDecimal.ZERO,
() -> {
this.mCurrentMtbColt.getMtbColr().remove(mtbColrToDelete);
this.sendOnRowSaved();
},
this::sendError
);
}
}
});
}
private void sendOnLoadingStarted() {
if (this.mListener != null) mListener.onLoadingStarted();
}
private void sendOnLoadingEnded() {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendOnFornitoriListLoaded(ArrayList<FornitoreDTO> fornitoriList) {
if (this.mListener != null) mListener.onFornitoriLoaded(fornitoriList);
}
private void sendOnArtListLoaded(ArrayList<MtbAart> artList) {
if (this.mListener != null) mListener.onArtListLoaded(artList);
}
private void sendOnLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete) {
if (this.mListener != null) mListener.onLUOpenRequest(onComplete);
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
private void sendLUOpened(MtbColt mtbColt) {
if (this.mListener != null) mListener.onLUOpened(mtbColt);
}
private void sendLUClosed() {
if (this.mListener != null) mListener.onLUClosed();
}
private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
}
private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO,
MtbAart mtbAart,
BigDecimal initialNumCnf,
BigDecimal initialQtaCnf,
BigDecimal initialQtaTot,
BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken,
String partitaMag,
Date dataScad,
boolean canOverflowOrderQuantity,
boolean canPartitaMagBeChanged,
boolean canLUBeClosed,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO,
mtbAart,
initialNumCnf,
initialQtaCnf,
initialQtaTot,
totalQtaToBeTaken,
totalNumCnfToBeTaken,
qtaCnfToBeTaken,
partitaMag,
dataScad,
canOverflowOrderQuantity,
canPartitaMagBeChanged,
canLUBeClosed,
onComplete);
}
private void sendOnRowSaved() {
if (this.mListener != null) mListener.onRowSaved();
}
private void sendLUSuccessfullyPrinted() {
if (this.mListener != null) mListener.onLUSuccessullyPrinted();
}
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
if (this.mListener != null) mListener.onLUPrintRequest(onComplete);
}
private void sendLUPrintError(Exception ex, Runnable onComplete) {
if (this.mListener != null) mListener.onLUPrintError(ex, onComplete);
}
private void sendLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete) {
if (this.mListener != null) mListener.onLUPositionChangeRequest(onComplete);
}
public interface Listener extends ILUPrintListener, ILUPositionListener {
void onLoadingStarted();
void onLoadingEnded();
void onFornitoriLoaded(ArrayList<FornitoreDTO> fornitoriList);
void onArtListLoaded(ArrayList<MtbAart> artList);
void onLUOpenRequest(RunnableArgss<MtbColt, Boolean> onComplete);
void onLUOpened(MtbColt mtbColt);
void onLUClosed();
void onMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete);
void onError(Exception ex);
void onItemDispatched(PickingObjectDTO pickingObjectDTO,
MtbAart mtbAart,
BigDecimal initialNumCnf,
BigDecimal initialQtaCnf,
BigDecimal initialQtaTot,
BigDecimal totalQtaToBeTaken,
BigDecimal totalNumCnfToBeTaken,
BigDecimal qtaCnfToBeTaken,
String partitaMag,
Date dataScad,
boolean canOverflowOrderQuantity,
boolean canPartitaMagBeChanged,
boolean canLUBeClosed,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onRowSaved();
}
public MtbColt getCurrentMtbColt() {
return mCurrentMtbColt;
}
}

View File

@ -1,7 +1,6 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.core; package it.integry.integrywmsnative.gest.rettifica_giacenze.core;
import android.app.Dialog; import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -28,28 +27,6 @@ public class RettificaGiacenzeHelper {
} }
public void loadListaFornitori(RunnableArgs<ArrayList<FornitoreDTO>> onComplete) {
final Dialog progress = UtilityProgress.createDefaultProgressDialog(mContext);
//progress.show();
String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'";
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<FornitoreDTO>>() {
@Override
public void onSuccess(ArrayList<FornitoreDTO> value) {
progress.dismiss();
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
UtilityExceptions.defaultException(mContext, ex, progress);
}
});
}
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) { public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " + String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " +
@ -62,7 +39,7 @@ public class RettificaGiacenzeHelper {
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() {
@Override @Override
public void onSuccess(ArrayList<MtbAartWithFornitore> value) { public void onSuccess(ArrayList<MtbAartWithFornitore> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);
@ -91,7 +68,7 @@ public class RettificaGiacenzeHelper {
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'"; "OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() {
@Override @Override
public void onSuccess(ArrayList<MtbAart> value) { public void onSuccess(ArrayList<MtbAart> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -0,0 +1,101 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.core;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import javax.inject.Singleton;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbAartWithFornitore;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers._BaseRESTConsumer;
import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
@Singleton
public class RettificaGiacenzeRESTConsumer extends _BaseRESTConsumer {
private final SystemRESTConsumer mSystemRestConsumer;
public RettificaGiacenzeRESTConsumer(SystemRESTConsumer systemRestConsumer) {
mSystemRestConsumer = systemRestConsumer;
}
public void loadListaFornitori(RunnableArgs<ArrayList<FornitoreDTO>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT cod_alis as 'codAlis', descrizione FROM atb_list WHERE flag_attivo = 'S'";
Type typeOfObjectsList = new TypeToken<ArrayList<FornitoreDTO>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<FornitoreDTO>>() {
@Override
public void onSuccess(ArrayList<FornitoreDTO> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
onFailed.run(ex);
}
});
}
public void searchArtForn(String codAlis, String codArtForOrDescr, RunnableArgs<ArrayList<MtbAartWithFornitore>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT mtb_aart.*, mtb_lisa.cod_art_for from mtb_lisa, mtb_aart, mtb_part " +
" WHERE mtb_lisa.cod_alis = " + UtilityDB.valueToString(codAlis) +
" AND mtb_lisa.cod_mart = mtb_aart.cod_mart " +
" AND mtb_lisa.cod_mart = mtb_part.cod_mart " +
" AND mtb_part.cod_mdep = '01' " +
" AND (mtb_aart.descrizione_estesa LIKE '%" + codArtForOrDescr + "%' OR cod_art_for LIKE '%" + codArtForOrDescr + "%') " +
" ORDER BY ABS(mtb_part.qta_esistente) DESC, mtb_aart.descrizione_estesa";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAartWithFornitore>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAartWithFornitore>>() {
@Override
public void onSuccess(ArrayList<MtbAartWithFornitore> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
public void searchArtInt(String codMartOrBarcodeOrDescr, RunnableArgs<ArrayList<MtbAart>> onComplete, RunnableArgs<Exception> onFailed) {
String sql = "SELECT DISTINCT mtb_aart.* " +
"FROM mtb_aart " +
"LEFT OUTER JOIN mvw_barcode on mtb_aart.cod_mart = mvw_barcode.cod_mart " +
"WHERE CASE" +
" WHEN LEN(mvw_barcode.cod_barre) > 13 THEN mvw_barcode.cod_barre " +
" ELSE Replicate('0', 13 - len(mvw_barcode.cod_barre))+ mvw_barcode.cod_barre " +
"END LIKE '%' + CASE " +
" WHEN LEN('" + codMartOrBarcodeOrDescr + "') > 13 THEN '" + codMartOrBarcodeOrDescr + "' " +
" ELSE Replicate('0', 13 - len('" + codMartOrBarcodeOrDescr + "')) + '" + codMartOrBarcodeOrDescr + "'" +
" END " +
"OR mtb_aart.cod_mart = '" + codMartOrBarcodeOrDescr + "' " +
"OR mtb_aart.descrizione_estesa LIKE '%" + codMartOrBarcodeOrDescr + "%'";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbAart>>() {}.getType();
mSystemRestConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<MtbAart>>() {
@Override
public void onSuccess(ArrayList<MtbAart> value) {
if(onComplete != null) onComplete.run(value);
}
@Override
public void onFailed(Exception ex) {
if(onFailed != null) onFailed.run(ex);
}
});
}
}

View File

@ -1,16 +1,14 @@
package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter; package it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter;
import android.content.Context;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableList;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.RecyclerView;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.interfaces.IRecyclerItemClicked; import it.integry.integrywmsnative.core.expansion.view.ExtendedRecyclerView;
import it.integry.integrywmsnative.core.model.MtbColr; import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityNumber; import it.integry.integrywmsnative.core.utility.UtilityNumber;
@ -18,13 +16,13 @@ import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.ListaRettificaGiacenzeModelBinding; import it.integry.integrywmsnative.databinding.ListaRettificaGiacenzeModelBinding;
public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter<RettificaGiacenzeMainListAdapter.ViewHolder> { public class RettificaGiacenzeMainListAdapter extends ExtendedRecyclerView<MtbColr, RettificaGiacenzeMainListAdapter.ViewHolder> {
protected Context mContext; private OnItemClickListener mOnItemClickListener;
protected ObservableArrayList<MtbColr> mDataset;
private View mEmptyView;
private IRecyclerItemClicked<MtbColr> mOnItemClickListener; public RettificaGiacenzeMainListAdapter(ObservableArrayList<MtbColr> myDataset) {
super(myDataset);
}
public static class ViewHolder extends RecyclerView.ViewHolder { public static class ViewHolder extends RecyclerView.ViewHolder {
protected ListaRettificaGiacenzeModelBinding mViewDataBinding; protected ListaRettificaGiacenzeModelBinding mViewDataBinding;
@ -41,16 +39,6 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter<Retti
} }
} }
public RettificaGiacenzeMainListAdapter(Context context, ObservableArrayList<MtbColr> myDataset, IRecyclerItemClicked<MtbColr> onItemClickListener, View emptView) {
mContext = context;
mDataset = myDataset;
mEmptyView = emptView;
mOnItemClickListener = onItemClickListener;
myDataset.addOnListChangedCallback(onListChangedCallback);
checkIfEmpty();
}
@Override @Override
public RettificaGiacenzeMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public RettificaGiacenzeMainListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
@ -80,60 +68,21 @@ public class RettificaGiacenzeMainListAdapter extends RecyclerView.Adapter<Retti
holder.mViewDataBinding.getRoot().setOnClickListener(x -> { holder.mViewDataBinding.getRoot().setOnClickListener(x -> {
if(mOnItemClickListener != null) { if(mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(mtbColr, position); mOnItemClickListener.onItemClick(holder.mViewDataBinding.getMtbColr());
} }
}); });
holder.mViewDataBinding.executePendingBindings();
} }
@Override
public void onViewRecycled(RettificaGiacenzeMainListAdapter.ViewHolder holder) { public RettificaGiacenzeMainListAdapter setOnItemClickListener(OnItemClickListener onItemClickListener) {
super.onViewRecycled(holder); this.mOnItemClickListener = onItemClickListener;
return this;
} }
@Override public interface OnItemClickListener {
public int getItemCount() { void onItemClick(MtbColr item);
return mDataset.size();
}
private ObservableList.OnListChangedCallback onListChangedCallback = new ObservableList.OnListChangedCallback<ObservableList<MtbColr>>(){
@Override
public void onChanged(ObservableList<MtbColr> sender) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeChanged(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeInserted(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeMoved(ObservableList<MtbColr> sender, int fromPosition, int toPosition, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
@Override
public void onItemRangeRemoved(ObservableList<MtbColr> sender, int positionStart, int itemCount) {
notifyDataSetChanged();
checkIfEmpty();
}
};
private void checkIfEmpty() {
if (mEmptyView != null) {
final boolean emptyViewVisible = getItemCount() == 0;
mEmptyView.setVisibility(emptyViewVisible ? View.VISIBLE : View.GONE);
}
} }
} }

View File

@ -3,23 +3,18 @@ package it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.res.Resources; import android.content.res.Resources;
import android.text.SpannableString;
import androidx.databinding.ObservableArrayList; import android.view.inputmethod.EditorInfo;
import androidx.databinding.ObservableField;
import androidx.annotation.NonNull;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.textfield.TextInputLayout;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import android.text.SpannableString;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.textfield.TextInputLayout;
import com.tfb.fbtoast.FBToast; import com.tfb.fbtoast.FBToast;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -27,14 +22,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
@ -46,12 +36,18 @@ import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.model.MtbCols; import it.integry.integrywmsnative.core.model.MtbCols;
import it.integry.integrywmsnative.core.model.MtbColt; import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.report.ReportManager; import it.integry.integrywmsnative.core.report.ReportManager;
import it.integry.integrywmsnative.core.rest.CommonRESTException;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.rest.consumers.PrinterRESTConsumer;
import it.integry.integrywmsnative.core.rest.model.Ean128Model;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBarcode;
import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityLogger; import it.integry.integrywmsnative.core.utility.UtilityLogger;
import it.integry.integrywmsnative.core.utility.UtilityNumber;
import it.integry.integrywmsnative.core.utility.UtilityProgress; import it.integry.integrywmsnative.core.utility.UtilityProgress;
import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding; import it.integry.integrywmsnative.databinding.FragmentMainRettificaGiacenzeBinding;
@ -61,15 +57,13 @@ import it.integry.integrywmsnative.gest.rettifica_giacenze.core.adapter.Rettific
import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO;
import it.integry.integrywmsnative.view.dialogs.DialogCommon; import it.integry.integrywmsnative.view.dialogs.DialogCommon;
import it.integry.integrywmsnative.view.dialogs.DialogConsts; import it.integry.integrywmsnative.view.dialogs.DialogConsts;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU; import it.integry.integrywmsnative.view.dialogs.ask_position_of_lu.DialogAskPositionOfLU;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageHelper;
import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts; import it.integry.integrywmsnative.view.dialogs.choose_art_from_lista_arts.DialogChooseArtFromListaArts;
import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity; import it.integry.integrywmsnative.view.dialogs.input_quantity.DialogInputQuantity;
import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO; import it.integry.integrywmsnative.view.dialogs.input_quantity.QuantityDTO;
import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU; import it.integry.integrywmsnative.view.dialogs.scan_or_create_lu.DialogScanOrCreateLU;
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo; import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNo;
import it.integry.barcode_base_android_library.model.BarcodeScanDTO;
import it.integry.barcode_base_android_library.model.BarcodeType;
public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> { public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr> {
@ -141,28 +135,28 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider)); itemDecorator.setDrawable(ContextCompat.getDrawable(mContext, R.drawable.divider));
mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator); mBinding.rettificaGiacenzeMainList.addItemDecoration(itemDecorator);
mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView); // mAdapter = new RettificaGiacenzeMainListAdapter(mContext, mtbColt.get().getMtbColr(), this, mBinding.rettificaGiacenzeEmptyView);
mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter); // mBinding.rettificaGiacenzeMainList.setAdapter(mAdapter);
} }
private void initBottomSheetActions() { private void initBottomSheetActions() {
mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)); // mBinding.bg.setOnClickListener(v -> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED));
mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions); // mBottomSheetBehavior = BottomSheetBehavior.from(mBinding.bottomSheetActions);
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { // mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override // @Override
public void onStateChanged(@NonNull View bottomSheet, int newState) { // public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED) // if (newState == BottomSheetBehavior.STATE_COLLAPSED)
mBinding.bg.setVisibility(View.GONE); // mBinding.bg.setVisibility(View.GONE);
} // }
//
@Override // @Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) { // public void onSlide(@NonNull View bottomSheet, float slideOffset) {
mBinding.bg.setVisibility(View.VISIBLE); // mBinding.bg.setVisibility(View.VISIBLE);
mBinding.bg.setAlpha(slideOffset); // mBinding.bg.setAlpha(slideOffset);
} // }
}); // });
} }
public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> { public RunnableArgs<BarcodeScanDTO> onScanSuccessfull = data -> {
@ -438,7 +432,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
.setGestione(mtbColt.get().getGestione()) .setGestione(mtbColt.get().getGestione())
.setSerCollo(mtbColt.get().getSerCollo()); .setSerCollo(mtbColt.get().getSerCollo());
ColliMagazzinoRESTConsumer.creaRettificaCollo(mtbColr, ColliMagazzinoRESTConsumer.creaRettificaColloStatic(mtbColr,
quantityDTO.numCnf.getBigDecimal(), quantityDTO.numCnf.getBigDecimal(),
quantityDTO.qtaTot.getBigDecimal(), quantityDTO.qtaTot.getBigDecimal(),
() -> { () -> {
@ -461,7 +455,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone(); MtbColt cloneMtbColt = (MtbColt) mtbColt.get().clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.NO_OP);
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList<>());
ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() { ColliMagazzinoRESTConsumer.saveColloStatic(cloneMtbColt, new ISimpleOperationCallback<MtbColt>() {
@Override @Override
@ -500,13 +494,13 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
MtbColr clickedItem = mtbColt.get().getMtbColr().get(position); MtbColr clickedItem = mtbColt.get().getMtbColr().get(position);
mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione()); // mBinding.bottomSheetActionsTitle.setText(clickedItem.getDescrizione());
mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart()); // mBinding.bottomSheetActionsSubtitle.setText(clickedItem.getCodMart());
//
mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(item, position)); // mBinding.bottomSheetActionsEditBtn.setOnClickListener(v -> onItemEdit(item, position));
mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(item)); // mBinding.bottomSheetActionsDeleteBtn.setOnClickListener(v -> onItemDelete(item));
//
mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getMtbAart().getUntMis()); // mBinding.bottomSheetActionsQuantity.setText(UtilityNumber.decimalToString(clickedItem.getQtaCol()) + " " + clickedItem.getMtbAart().getUntMis());
} }
public void openLU() { public void openLU() {
@ -663,7 +657,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
if (!isCreatedLU) { if (!isCreatedLU) {
BigDecimal finalNewNumCnf = newNumCnf; BigDecimal finalNewNumCnf = newNumCnf;
ColliMagazzinoRESTConsumer.creaRettificaCollo( ColliMagazzinoRESTConsumer.creaRettificaColloStatic(
mtbColrToEditClone, mtbColrToEditClone,
newNumCnf, newNumCnf,
newQtaCol, newQtaCol,
@ -731,7 +725,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
if (!isCreatedLU) { if (!isCreatedLU) {
ColliMagazzinoRESTConsumer.creaRettificaCollo( ColliMagazzinoRESTConsumer.creaRettificaColloStatic(
mtbColrToDeleteClone, mtbColrToDeleteClone,
BigDecimal.ZERO, BigDecimal.ZERO,
BigDecimal.ZERO, BigDecimal.ZERO,
@ -765,16 +759,14 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
this.showAskPrint(shouldPrint -> { this.showAskPrint(shouldPrint -> {
if (shouldPrint) { if (shouldPrint) {
PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), new ISimpleOperationCallback<List<String>>() { PrinterRESTConsumer.getAvailablePrintersStatic(SettingsManager.i().userSession.depo.getCodMdep(), value -> {
@Override
public void onSuccess(List<String> value) {
if (value.size() > 0) { if (value.size() > 0) {
try { try {
ReportManager.getRightReportNameByGestione(mtbColt.get().getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColt.get().getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printCollo(value.get(0), PrinterRESTConsumer.printColloStatic(value.get(0),
mtbColt.get(), mtbColt.get(),
1, 1,
reportName, reportName,
@ -809,15 +801,11 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
String errorMessage = "Nessuna stampante configurata"; String errorMessage = "Nessuna stampante configurata";
showPrintErrorDialog(errorMessage); showPrintErrorDialog(errorMessage);
} }
} }, ex -> {
@Override
public void onFailed(Exception ex) {
progress.dismiss(); progress.dismiss();
UtilityLogger.errorMe(ex); UtilityLogger.errorMe(ex);
String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex); String errorMessage = CommonRESTException.tryRecognizeThenGetMessage(ex);
showPrintErrorDialog(errorMessage); showPrintErrorDialog(errorMessage);
}
}); });
} else { } else {
progress.dismiss(); progress.dismiss();

View File

@ -1,14 +1,15 @@
package it.integry.integrywmsnative.gest.spedizione_new; package it.integry.integrywmsnative.gest.spedizione_new;
import android.app.Dialog;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.SpannableString;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableArrayList; import androidx.databinding.ObservableArrayList;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableString;
import com.annimon.stream.Stream; import com.annimon.stream.Stream;
import com.tfb.fbtoast.FBToast; import com.tfb.fbtoast.FBToast;
@ -76,7 +77,7 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel; private BottomSheetFragmentLUContentViewModel mBottomSheetFragmentLUContentViewModel;
private ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList(); private ObservableArrayList<SpedizioneListModel> mSpedizioneMutableData = new ObservableArrayList<>();
public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false); public BindableBoolean addExtraItemsEnabled = new BindableBoolean(false);
@ -532,6 +533,13 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}).show(); }).show();
} }
@Override
public void onLUSuccessullyPrinted() {
Resources res = getResources();
String errorMessage = res.getText(R.string.alert_print_completed_message).toString();
DialogSimpleMessageHelper.makeSuccessDialog(this, res.getText(R.string.completed).toString(), new SpannableString(errorMessage), null, null).show();
}
@Override @Override
public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) { public void onLUPrintRequest(RunnableArgs<Boolean> onComplete) {
DialogAskShouldPrint.make(this, "Packing List", onComplete).show(); DialogAskShouldPrint.make(this, "Packing List", onComplete).show();

View File

@ -6,6 +6,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import it.integry.integrywmsnative.MainApplicationModule; import it.integry.integrywmsnative.MainApplicationModule;
import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService; import it.integry.integrywmsnative.core.data_recover.ColliDataRecoverService;
import it.integry.integrywmsnative.core.rest.consumers.ArticoloRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer;
import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.OrdiniRESTConsumer;
@ -23,8 +24,8 @@ public class SpedizioneModule {
@Provides @Provides
@Singleton @Singleton
SpedizioneViewModel providesSpedizioneViewModel(ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) { SpedizioneViewModel providesSpedizioneViewModel(ArticoloRESTConsumer articoloRESTConsumer, ColliDataRecoverService colliDataRecoverService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, PrinterRESTConsumer printerRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer) {
return new SpedizioneViewModel(barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer); return new SpedizioneViewModel(articoloRESTConsumer, barcodeRESTConsumer, colliDataRecoverService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, printerRESTConsumer);
} }
} }

View File

@ -27,6 +27,7 @@ import it.integry.integrywmsnative.core.expansion.AtomicBigDecimal;
import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILUPrintListener;
import it.integry.integrywmsnative.core.model.CommonModelConsts; import it.integry.integrywmsnative.core.model.CommonModelConsts;
import it.integry.integrywmsnative.core.model.FiltroOrdineDTO; import it.integry.integrywmsnative.core.model.FiltroOrdineDTO;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
@ -72,7 +73,7 @@ public class SpedizioneViewModel {
private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>(); private MutableLiveData<List<PickingObjectDTO>> mPickingList = new MutableLiveData<>();
private List<MtbColt> mColliRegistrati = new ArrayList<>(); private List<MtbColt> mColliRegistrati = new ArrayList<>();
private Listeners mListeners; private Listeners mListener;
private GestioneEnum mDefaultGestioneOfUL = null; private GestioneEnum mDefaultGestioneOfUL = null;
private String mDefaultCodMdep = null; private String mDefaultCodMdep = null;
@ -92,6 +93,7 @@ public class SpedizioneViewModel {
private MtbColt mCurrentMtbColt = null; private MtbColt mCurrentMtbColt = null;
private Integer mMtbColtSessionID; private Integer mMtbColtSessionID;
private final ArticoloRESTConsumer mArticoloRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
private final ColliDataRecoverService mColliDataRecoverService; private final ColliDataRecoverService mColliDataRecoverService;
private final OrdiniRESTConsumer mOrdiniRestConsumerService; private final OrdiniRESTConsumer mOrdiniRestConsumerService;
@ -99,11 +101,13 @@ public class SpedizioneViewModel {
private final PrinterRESTConsumer mPrinterRESTConsumer; private final PrinterRESTConsumer mPrinterRESTConsumer;
@Inject @Inject
public SpedizioneViewModel( BarcodeRESTConsumer barcodeRESTConsumer, public SpedizioneViewModel( ArticoloRESTConsumer articoloRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
ColliDataRecoverService colliDataRecoverService, ColliDataRecoverService colliDataRecoverService,
OrdiniRESTConsumer ordiniRESTConsumer, OrdiniRESTConsumer ordiniRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
PrinterRESTConsumer printerRESTConsumer) { PrinterRESTConsumer printerRESTConsumer) {
this.mArticoloRESTConsumer = articoloRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
this.mColliDataRecoverService = colliDataRecoverService; this.mColliDataRecoverService = colliDataRecoverService;
this.mOrdiniRestConsumerService = ordiniRESTConsumer; this.mOrdiniRestConsumerService = ordiniRESTConsumer;
@ -276,47 +280,47 @@ public class SpedizioneViewModel {
} }
private void sendOnLoadingStarted() { private void sendOnLoadingStarted() {
if (this.mListeners != null) mListeners.onLoadingStarted(); if (this.mListener != null) mListener.onLoadingStarted();
} }
private void sendOnLoadingEnded() { private void sendOnLoadingEnded() {
if (this.mListeners != null) mListeners.onLoadingEnded(); if (this.mListener != null) mListener.onLoadingEnded();
} }
private void sendError(Exception ex) { private void sendError(Exception ex) {
if (this.mListeners != null) mListeners.onError(ex); if (this.mListener != null) mListener.onError(ex);
} }
private void sendLUOpened(MtbColt mtbColt) { private void sendLUOpened(MtbColt mtbColt) {
if (this.mListeners != null) mListeners.onLUOpened(mtbColt); if (this.mListener != null) mListener.onLUOpened(mtbColt);
} }
private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) { private void sendLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete) {
if (this.mListeners != null) mListeners.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete); if (this.mListener != null) mListener.onLUPesoRequired(codTcol, netWeightKG, grossWeightKG, onComplete);
} }
private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) { private void sendLUPrintRequest(RunnableArgs<Boolean> onComplete) {
if (this.mListeners != null) mListeners.onLUPrintRequest(onComplete); if (this.mListener != null) mListener.onLUPrintRequest(onComplete);
} }
private void sendLUPrintError(Exception ex, Runnable onComplete) { private void sendLUPrintError(Exception ex, Runnable onComplete) {
if (this.mListeners != null) mListeners.onLUPrintError(ex, onComplete); if (this.mListener != null) mListener.onLUPrintError(ex, onComplete);
} }
private void sendLUClosed() { private void sendLUClosed() {
if (this.mListeners != null) mListeners.onLUClosed(); if (this.mListener != null) mListener.onLUClosed();
} }
private void sendFilterApplied(String newValue) { private void sendFilterApplied(String newValue) {
if (this.mListeners != null) mListeners.onFilterApplied(newValue); if (this.mListener != null) mListener.onFilterApplied(newValue);
} }
private void sendFilterRemoved() { private void sendFilterRemoved() {
if (this.mListeners != null) mListeners.onFilterRemoved(); if (this.mListener != null) mListener.onFilterRemoved();
} }
private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) { private void sendMtbColrDeleteRequest(RunnableArgs<Boolean> onComplete) {
if (this.mListeners != null) mListeners.onMtbColrDeleteRequest(onComplete); if (this.mListener != null) mListener.onMtbColrDeleteRequest(onComplete);
} }
private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO, private void sendOnItemDispatched(PickingObjectDTO pickingObjectDTO,
@ -337,7 +341,7 @@ public class SpedizioneViewModel {
Date dataScad, Date dataScad,
boolean canOverflowOrderQuantity, boolean canOverflowOrderQuantity,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete) { RunnableArgss<PickedQuantityDTO, Boolean> onComplete) {
if (this.mListeners != null) mListeners.onItemDispatched(pickingObjectDTO, if (this.mListener != null) mListener.onItemDispatched(pickingObjectDTO,
mtbAart, mtbAart,
initialNumCnf, initialNumCnf,
initialQtaCnf, initialQtaCnf,
@ -358,7 +362,7 @@ public class SpedizioneViewModel {
} }
private void sendOnRowSaved() { private void sendOnRowSaved() {
if (this.mListeners != null) mListeners.onRowSaved(); if (this.mListener != null) mListener.onRowSaved();
} }
public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) {
@ -546,7 +550,7 @@ public class SpedizioneViewModel {
barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd); barcodeProd = UtilityBarcode.convertITF14toEAN13(barcodeProd);
} }
ArticoloRESTConsumer.getByBarcodeProdStatic(barcodeProd, mtbAartList -> { this.mArticoloRESTConsumer.getByBarcodeProd(barcodeProd, mtbAartList -> {
if (mtbAartList != null && mtbAartList.size() > 0) { if (mtbAartList != null && mtbAartList.size() > 0) {
this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete); this.searchArtFromAnag(mtbAartList.get(0), pickData, onComplete);
@ -1142,7 +1146,7 @@ public class SpedizioneViewModel {
MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone(); MtbColt cloneMtbColt = (MtbColt) mCurrentMtbColt.clone();
cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE); cloneMtbColt.setOperation(CommonModelConsts.OPERATION.UPDATE);
cloneMtbColt.setMtbColr(new ObservableArrayList()); cloneMtbColt.setMtbColr(new ObservableArrayList<>());
cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone()); cloneMtbColt.getMtbColr().add((MtbColr) mtbColr.clone());
boolean shouldPrint = true; boolean shouldPrint = true;
@ -1191,7 +1195,7 @@ public class SpedizioneViewModel {
} }
public void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) { private void saveEditedRow(MtbColr mtbColrToUpdate, BigDecimal numCnf, BigDecimal qtaCnf, BigDecimal qtaTot, String partitaMag, Date dataScad, boolean shouldCloseLU) {
this.sendOnLoadingStarted(); this.sendOnLoadingStarted();
@ -1347,7 +1351,7 @@ public class SpedizioneViewModel {
onComplete.run(); onComplete.run();
} else { } else {
mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> { this.mPrinterRESTConsumer.getAvailablePrinters(mDefaultCodMdep, PrinterRESTConsumer.Type.PRIMARIA, printerList -> {
if (printerList == null || printerList.size() == 0) { if (printerList == null || printerList.size() == 0) {
this.sendError(new NoPrintersFoundException()); this.sendError(new NoPrintersFoundException());
@ -1375,9 +1379,9 @@ public class SpedizioneViewModel {
} }
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) { private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onFailed) {
ReportManager.getRightReportNameByGestione(mtbColtToPrint.getGestioneEnum(), reportName -> { ReportManager.getReportNameLUFromGestione(mtbColtToPrint.getGestioneEnum(), reportName -> {
PrinterRESTConsumer.printCollo( PrinterRESTConsumer.printColloStatic(
printerName, printerName,
mtbColtToPrint, mtbColtToPrint,
1, 1,
@ -1468,11 +1472,11 @@ public class SpedizioneViewModel {
} }
public SpedizioneViewModel setListeners(Listeners listeners) { public SpedizioneViewModel setListeners(Listeners listeners) {
this.mListeners = listeners; this.mListener = listeners;
return this; return this;
} }
public interface Listeners { public interface Listeners extends ILUPrintListener {
void onLoadingStarted(); void onLoadingStarted();
void onLoadingEnded(); void onLoadingEnded();
@ -1483,10 +1487,6 @@ public class SpedizioneViewModel {
void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete); void onLUPesoRequired(String codTcol, BigDecimal netWeightKG, BigDecimal grossWeightKG, RunnableArgsss<String, BigDecimal, BigDecimal> onComplete);
void onLUPrintRequest(RunnableArgs<Boolean> onComplete);
void onLUPrintError(Exception ex, Runnable onComplete);
void onFilterApplied(String newValue); void onFilterApplied(String newValue);
void onFilterRemoved(); void onFilterRemoved();

View File

@ -16,7 +16,6 @@ import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.DtbDocr; import it.integry.integrywmsnative.core.model.DtbDocr;
import it.integry.integrywmsnative.core.model.MtbAart; import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.utility.UtilityDB; import it.integry.integrywmsnative.core.utility.UtilityDB;
import it.integry.integrywmsnative.core.utility.UtilityDate;
import it.integry.integrywmsnative.core.utility.UtilityQuery; import it.integry.integrywmsnative.core.utility.UtilityQuery;
import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr; import it.integry.integrywmsnative.gest.picking_resi.dto.WithdrawableDtbDocr;
import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO;
@ -30,7 +29,7 @@ public class UltimeConsegneClienteRESTConsumer {
"WHERE flag_stato = 'A'"; "WHERE flag_stato = 'A'";
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() {
@Override @Override
public void onSuccess(ArrayList<GtbAnag> value) { public void onSuccess(ArrayList<GtbAnag> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);
@ -61,7 +60,7 @@ public class UltimeConsegneClienteRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() {
@Override @Override
public void onSuccess(ArrayList<DocumentoResoDTO> value) { public void onSuccess(ArrayList<DocumentoResoDTO> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);
@ -179,7 +178,7 @@ public class UltimeConsegneClienteRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<WithdrawableDtbDocr>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<WithdrawableDtbDocr>>() {
@Override @Override
public void onSuccess(ArrayList<WithdrawableDtbDocr> values) { public void onSuccess(ArrayList<WithdrawableDtbDocr> values) {

View File

@ -22,7 +22,7 @@ public class UltimiArriviFornitoreRESTConsumer {
"WHERE flag_stato = 'A'"; "WHERE flag_stato = 'A'";
Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<GtbAnag>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<GtbAnag>>() {
@Override @Override
public void onSuccess(ArrayList<GtbAnag> value) { public void onSuccess(ArrayList<GtbAnag> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);
@ -52,7 +52,7 @@ public class UltimiArriviFornitoreRESTConsumer {
Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<DocumentoResoDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DocumentoResoDTO>>() {
@Override @Override
public void onSuccess(ArrayList<DocumentoResoDTO> value) { public void onSuccess(ArrayList<DocumentoResoDTO> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -220,7 +220,7 @@ public class VenditaHelper {
baseSql += "( " + whereCond + ")"; baseSql += "( " + whereCond + ")";
Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<MtbColt>>() {}.getType();
SystemRESTConsumer.processSql(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() { SystemRESTConsumer.processSqlStatic(baseSql, typeOfObjectsList, new ISimpleOperationCallback<List<MtbColt>>() {
@Override @Override
public void onSuccess(List<MtbColt> value) { public void onSuccess(List<MtbColt> value) {
if(onComplete != null) onComplete.run(value); if(onComplete != null) onComplete.run(value);

View File

@ -48,7 +48,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
"ORDER BY rag_soc"; "ORDER BY rag_soc";
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteClienteDTO>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteClienteDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteClienteDTO>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteClienteDTO>>() {
@Override @Override
public void onSuccess(ArrayList<DialogAskClienteClienteDTO> value) { public void onSuccess(ArrayList<DialogAskClienteClienteDTO> value) {
availableClienti = value; availableClienti = value;

View File

@ -50,7 +50,7 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
"WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag); "WHERE cod_anag = " + UtilityDB.valueToString(mCodAnag);
Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {}.getType(); Type typeOfObjectsList = new TypeToken<ArrayList<DialogAskClienteDestinatarioDTO>>() {}.getType();
SystemRESTConsumer.processSql(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() { SystemRESTConsumer.processSqlStatic(sql, typeOfObjectsList, new ISimpleOperationCallback<ArrayList<DialogAskClienteDestinatarioDTO>>() {
@Override @Override
public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) { public void onSuccess(ArrayList<DialogAskClienteDestinatarioDTO> value) {
availableDestinatari = value; availableDestinatari = value;

View File

@ -143,6 +143,18 @@ public class DialogInputQuantityV2 extends DialogFragment implements DialogInput
} }
private void init() { private void init() {
UtilityObservable.addPropertyChanged(this.currentPartitaMag, (value) -> {
if (this.mEnableDataCallback) {
this.mViewModel.setPartitaMag(value);
}
});
UtilityObservable.addPropertyChanged(this.currentDataScad, (value) -> {
if (this.mEnableDataCallback) {
this.mViewModel.setDataScad(value);
}
});
UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> { UtilityObservable.addPropertyChanged(this.currentNumCnf, (value) -> {
if (this.mEnableDataCallback) { if (this.mEnableDataCallback) {
this.mViewModel.setNumCnf(value); this.mViewModel.setNumCnf(value);

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View"/>
<import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<variable
name="viewmodel"
type="it.integry.integrywmsnative.gest.picking_libero.viewmodel.PickingLiberoViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<it.integry.integrywmsnative.ui.ElevatedToolbar
android:id="@+id/elevated_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:gravity="center_horizontal"
app:popupTheme="@style/AppTheme.PopupOverlay">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Picking Libero"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:layout_gravity="center" />
</androidx.appcompat.widget.Toolbar>
</it.integry.integrywmsnative.ui.ElevatedToolbar>
<fragment
android:id="@+id/top_fragment"
android:name="it.integry.integrywmsnative.gest.picking_libero.PickingLiberoFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</layout>

View File

@ -1,25 +1,31 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="androidx.databinding.ObservableList" /> <import type="androidx.databinding.ObservableList" />
<import type="it.integry.integrywmsnative.core.utility.UtilityString" /> <import type="it.integry.integrywmsnative.core.utility.UtilityString" />
<import type="android.view.View" /> <import type="android.view.View" />
<variable name="view" type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment" />
<variable
name="view"
type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeFragment" />
<variable <variable
name="viewmodel" name="viewmodel"
type="it.integry.integrywmsnative.gest.rettifica_giacenze.viewmodel.RettificaGiacenzeViewModel" /> type="it.integry.integrywmsnative.gest.rettifica_giacenze.RettificaGiacenzeViewModelNEW" />
</data> </data>
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/empty_view_bg_gray" android:background="@color/empty_view_bg_gray"
tools:context=".gest.rettifica_giacenze.RettificaGiacenzeFragment" android:clipToPadding="false"
android:clipToPadding="false"> tools:context=".gest.rettifica_giacenze.RettificaGiacenzeFragment">
<androidx.coordinatorlayout.widget.CoordinatorLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -40,38 +46,59 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="8dp" android:padding="8dp"
app:el_expanded_bind="@{viewmodel.isMtbColtLoaded}"> app:el_expanded_bind="@{view.thereIsAnOpenedUL}">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"
android:background="@drawable/badge1_round_corner">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="12dp" android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingEnd="2dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold" android:text="num:" />
android:background="@drawable/badge1_round_corner"
android:text="@{viewmodel.mtbColt.numCollo.toString()}" <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium" style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="0dp"
android:paddingTop="8dp"
android:paddingEnd="12dp"
android:paddingBottom="8dp"
android:text="@{view.currentMtbColtObs.numCollo.toString()}"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="2156" /> tools:text="2156" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="12dp" android:paddingStart="12dp"
android:textColor="@android:color/black" android:paddingTop="8dp"
android:textStyle="bold" android:paddingEnd="2dp"
android:visibility="@{!UtilityString.isNullOrEmpty(viewmodel.mtbColt.posizione) ? View.VISIBLE : View.GONE}" android:paddingBottom="8dp"
android:text="@{viewmodel.mtbColt.posizione}" android:textColor="@android:color/white"
style="@style/AppTheme.NewMaterial.Text.Medium" android:text="pos:"
tools:text="ME1FS032"/> android:visibility="@{!UtilityString.isNullOrEmpty(viewmodel.currentMtbColt.posizione) ? View.VISIBLE : View.GONE}" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{view.currentMtbColtObs.posizione}"
android:textColor="@android:color/white"
android:textStyle="bold"
android:visibility="@{!UtilityString.isNullOrEmpty(viewmodel.currentMtbColt.posizione) ? View.VISIBLE : View.GONE}"
tools:text="ME1FS032" />
</LinearLayout> </LinearLayout>
@ -82,13 +109,13 @@
android:id="@+id/rettifica_giacenze_forn_layout" android:id="@+id/rettifica_giacenze_forn_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="4dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="6dp"
android:paddingTop="6dp" android:paddingTop="6dp"
android:paddingEnd="6dp"
android:paddingBottom="6dp"> android:paddingBottom="6dp">
<RadioButton <RadioButton
@ -112,46 +139,46 @@
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/auto_complete_fornitori_layout" android:id="@+id/auto_complete_fornitori_layout"
style="@style/TextInputLayout.NoLine"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:hintTextAppearance="@style/hint_text" app:hintTextAppearance="@style/hint_text"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/guide_line_fornitore" app:layout_constraintEnd_toStartOf="@id/guide_line_fornitore"
style="@style/TextInputLayout.NoLine"> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatAutoCompleteTextView <androidx.appcompat.widget.AppCompatAutoCompleteTextView
android:id="@+id/auto_complete_fornitori" android:id="@+id/auto_complete_fornitori"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:ems="10"
android:singleLine="true"
android:completionThreshold="2" android:completionThreshold="2"
android:ems="10"
android:hint="@string/supplier" android:hint="@string/supplier"
android:paddingStart="12dp"/> android:paddingStart="12dp"
android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_cod_art_descr_forn" android:id="@+id/layout_cod_art_descr_forn"
style="@style/TextInputLayout.NoLine"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:hintTextAppearance="@style/hint_text"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/guide_line_fornitore"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
style="@style/TextInputLayout.NoLine"> app:hintTextAppearance="@style/hint_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guide_line_fornitore"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_cod_art_descr_forn" android:id="@+id/input_cod_art_descr_forn"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textNoSuggestions" android:hint="@string/cod_art_or_description"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:singleLine="true" android:inputType="textNoSuggestions"
android:hint="@string/cod_art_or_description"/> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -164,13 +191,13 @@
android:id="@+id/rettifica_giacenze_art_int_layout" android:id="@+id/rettifica_giacenze_art_int_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="4dp"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="6dp"
android:paddingTop="6dp" android:paddingTop="6dp"
android:paddingEnd="6dp"
android:paddingBottom="6dp"> android:paddingBottom="6dp">
<RadioButton <RadioButton
@ -187,22 +214,22 @@
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_cod_art_descr_int" android:id="@+id/layout_cod_art_descr_int"
style="@style/TextInputLayout.NoLine"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:hintTextAppearance="@style/hint_text" app:hintTextAppearance="@style/hint_text"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
style="@style/TextInputLayout.NoLine"> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_cod_art_descr_int" android:id="@+id/input_cod_art_descr_int"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textNoSuggestions" android:hint="@string/cod_art_or_description"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:singleLine="true" android:inputType="textNoSuggestions"
android:hint="@string/cod_art_or_description"/> android:singleLine="true" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -212,9 +239,6 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
@ -252,25 +276,25 @@
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal" android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left" android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right" app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top"> app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp" android:layout_width="72dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp" android:adjustViewBounds="true"
android:adjustViewBounds="true"/> android:src="@drawable/ic_playlist_add_check_24dp" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:text="@string/no_item_text" android:text="@string/no_item_text"
style="@style/AppTheme.NewMaterial.Text.Medium"/> android:textColor="@android:color/black" />
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -279,175 +303,178 @@
android:id="@+id/rettifica_giacenze_main_list" android:id="@+id/rettifica_giacenze_main_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingBottom="80dp" android:paddingBottom="80dp"
android:clipToPadding="false"
android:scrollbarStyle="outsideOverlay" /> android:scrollbarStyle="outsideOverlay" />
<com.google.android.material.floatingactionbutton.FloatingActionButton <com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/rettifica_giacenze_main_fab" android:id="@+id/rettifica_giacenze_main_fab"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:onClick="@{() -> viewmodel.closeLU(false)}"
android:tint="@android:color/white" android:tint="@android:color/white"
style="@style/Widget.MaterialComponents.FloatingActionButton" app:visibility="@{view.thereIsAnOpenedUL}"
app:srcCompat="@drawable/ic_check_black_24dp" app:srcCompat="@drawable/ic_check_black_24dp" />
android:onClick="@{() -> viewmodel.closeLU(true, true)}"
android:visibility="@{viewmodel.isFabVisible.get() ? View.VISIBLE : View.GONE}"
/>
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>
<View <View
android:visibility="gone" android:id="@+id/bottom_sheet__mtb_colr_edit__background"
android:id="@+id/bg"
android:background="#99000000"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"
android:background="#99000000"
android:visibility="gone" />
<it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView
android:id="@+id/bottom_sheet__mtb_colr_edit"
<LinearLayout
android:id="@+id/bottom_sheet_actions"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="#fff"
android:orientation="vertical"
android:padding="16dp"
android:layout_gravity="bottom"
app:behavior_hideable="true" app:behavior_hideable="true"
app:behavior_peekHeight="0dp" app:behavior_peekHeight="0dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> app:layout_behavior=".view.bottom_sheet__base.AutoCloseBottomSheetBehavior" />
<androidx.constraintlayout.widget.ConstraintLayout <!-- <LinearLayout-->
android:layout_width="match_parent" <!-- android:id="@+id/bottom_sheet_actions"-->
android:layout_height="wrap_content" <!-- android:layout_width="match_parent"-->
android:orientation="horizontal" <!-- android:layout_height="wrap_content"-->
android:layout_gravity="center_vertical"> <!-- android:layout_gravity="bottom"-->
<!-- android:background="#fff"-->
<!-- android:orientation="vertical"-->
<!-- android:padding="16dp"-->
<!-- app:behavior_hideable="true"-->
<!-- app:behavior_peekHeight="0dp"-->
<!-- app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">-->
<LinearLayout <!-- <androidx.constraintlayout.widget.ConstraintLayout-->
android:layout_width="0dp" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:orientation="vertical" <!-- android:layout_gravity="center_vertical"-->
android:layout_marginBottom="8dp" <!-- android:orientation="horizontal">-->
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/bottom_sheet_actions_quantity"
app:layout_constraintStart_toStartOf="parent">
<androidx.appcompat.widget.AppCompatTextView <!-- <LinearLayout-->
android:id="@+id/bottom_sheet_actions_title" <!-- android:layout_width="0dp"-->
android:layout_width="wrap_content" <!-- android:layout_height="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_marginBottom="8dp"-->
tools:text="Descrizione articolo" <!-- android:orientation="vertical"-->
android:textColor="#444" <!-- app:layout_constraintEnd_toStartOf="@id/bottom_sheet_actions_quantity"-->
android:maxLines="2" <!-- app:layout_constraintStart_toStartOf="parent"-->
android:ellipsize="end" <!-- app:layout_constraintTop_toTopOf="parent">-->
android:paddingStart="0dp"
android:paddingEnd="8dp"
android:textStyle="bold"
style="@style/AppTheme.NewMaterial.Text.Medium"/>
<androidx.appcompat.widget.AppCompatTextView <!-- <androidx.appcompat.widget.AppCompatTextView-->
android:id="@+id/bottom_sheet_actions_subtitle" <!-- android:id="@+id/bottom_sheet_actions_title"-->
android:layout_width="wrap_content" <!-- style="@style/AppTheme.NewMaterial.Text.Medium"-->
android:layout_height="wrap_content" <!-- android:layout_width="wrap_content"-->
tools:text="ABF52IL" <!-- android:layout_height="wrap_content"-->
style="@style/AppTheme.NewMaterial.Text.Small" /> <!-- android:ellipsize="end"-->
<!-- android:maxLines="2"-->
<!-- android:paddingStart="0dp"-->
<!-- android:paddingEnd="8dp"-->
<!-- android:textColor="#444"-->
<!-- android:textStyle="bold"-->
<!-- tools:text="Descrizione articolo" />-->
</LinearLayout> <!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- android:id="@+id/bottom_sheet_actions_subtitle"-->
<!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- tools:text="ABF52IL" />-->
<TextView <!-- </LinearLayout>-->
android:id="@+id/bottom_sheet_actions_quantity"
android:layout_width="wrap_content"
android:gravity="end"
android:layout_height="wrap_content"
android:textStyle="bold"
tools:text="250 PZ"
style="@style/AppTheme.NewMaterial.Text.Small"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout <!-- <TextView-->
android:layout_width="match_parent" <!-- android:id="@+id/bottom_sheet_actions_quantity"-->
android:layout_height="wrap_content" <!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
android:orientation="horizontal"> <!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:gravity="end"-->
<!-- android:textStyle="bold"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- tools:text="250 PZ" />-->
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="horizontal">-->
<androidx.constraintlayout.widget.Guideline <!-- <androidx.constraintlayout.widget.Guideline-->
android:id="@+id/guideline_action" <!-- android:id="@+id/guideline_action"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:orientation="vertical" <!-- android:orientation="vertical"-->
app:layout_constraintGuide_percent="0.50" /> <!-- app:layout_constraintGuide_percent="0.50" />-->
<LinearLayout <!-- <LinearLayout-->
android:layout_width="0dp" <!-- android:layout_width="0dp"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:orientation="vertical" <!-- android:gravity="center"-->
app:layout_constraintTop_toTopOf="parent" <!-- android:orientation="vertical"-->
app:layout_constraintEnd_toStartOf="@id/guideline_action" <!-- app:layout_constraintEnd_toStartOf="@id/guideline_action"-->
app:layout_constraintStart_toStartOf="parent" <!-- app:layout_constraintStart_toStartOf="parent"-->
android:gravity="center"> <!-- app:layout_constraintTop_toTopOf="parent">-->
<androidx.appcompat.widget.AppCompatImageButton <!-- <androidx.appcompat.widget.AppCompatImageButton-->
android:id="@+id/bottom_sheet_actions_edit_btn" <!-- android:id="@+id/bottom_sheet_actions_edit_btn"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:padding="16dp" <!-- android:background="@android:color/white"-->
android:background="@android:color/white" <!-- android:padding="16dp"-->
android:scaleX="1.5" <!-- android:scaleX="1.5"-->
android:scaleY="1.5" <!-- android:scaleY="1.5"-->
android:src="@drawable/ic_edit_24dp" <!-- android:src="@drawable/ic_edit_24dp"-->
android:tint="@color/green_600" /> <!-- android:tint="@color/green_600" />-->
<androidx.appcompat.widget.AppCompatTextView <!-- <androidx.appcompat.widget.AppCompatTextView-->
android:layout_width="wrap_content" <!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
android:layout_height="wrap_content" <!-- android:layout_width="wrap_content"-->
style="@style/AppTheme.NewMaterial.Text.Small" <!-- android:layout_height="wrap_content"-->
android:text="@string/edit"/> <!-- android:text="@string/edit" />-->
</LinearLayout> <!-- </LinearLayout>-->
<LinearLayout <!-- <LinearLayout-->
android:layout_width="0dp" <!-- android:layout_width="0dp"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:orientation="vertical" <!-- android:gravity="center"-->
app:layout_constraintTop_toTopOf="parent" <!-- android:orientation="vertical"-->
app:layout_constraintEnd_toEndOf="parent" <!-- app:layout_constraintEnd_toEndOf="parent"-->
app:layout_constraintStart_toStartOf="@id/guideline_action" <!-- app:layout_constraintStart_toStartOf="@id/guideline_action"-->
android:gravity="center"> <!-- app:layout_constraintTop_toTopOf="parent">-->
<androidx.appcompat.widget.AppCompatImageButton <!-- <androidx.appcompat.widget.AppCompatImageButton-->
android:id="@+id/bottom_sheet_actions_delete_btn" <!-- android:id="@+id/bottom_sheet_actions_delete_btn"-->
android:layout_width="wrap_content" <!-- android:layout_width="wrap_content"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
android:padding="16dp" <!-- android:background="@android:color/white"-->
android:background="@android:color/white" <!-- android:padding="16dp"-->
android:scaleX="1.5" <!-- android:scaleX="1.5"-->
android:scaleY="1.5" <!-- android:scaleY="1.5"-->
android:src="@drawable/ic_delete_24dp" <!-- android:src="@drawable/ic_delete_24dp"-->
android:tint="@color/red_600" /> <!-- android:tint="@color/red_600" />-->
<androidx.appcompat.widget.AppCompatTextView <!-- <androidx.appcompat.widget.AppCompatTextView-->
android:layout_width="wrap_content" <!-- style="@style/AppTheme.NewMaterial.Text.Small"-->
android:layout_height="wrap_content" <!-- android:layout_width="wrap_content"-->
style="@style/AppTheme.NewMaterial.Text.Small" <!-- android:layout_height="wrap_content"-->
android:text="@string/delete"/> <!-- android:text="@string/delete" />-->
</LinearLayout> <!-- </LinearLayout>-->
</androidx.constraintlayout.widget.ConstraintLayout> <!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
</LinearLayout>
<!-- </LinearLayout>-->
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>