Compare commits

...

25 Commits

Author SHA1 Message Date
84876bf7c1 Finish v1.28.3(297) 2022-07-20 16:08:12 +02:00
fca325855e -> v1.28.3 (297) 2022-07-20 16:08:06 +02:00
c6fc287a3f corretto controllo su creazione collo in accettazione
aggiunto controllo su stato articoli in servizio getArticoloBybarcode
2022-07-20 16:07:14 +02:00
29fd0292e7 Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
90cf83e3cd Finish v1.28.2(296) 2022-07-20 15:46:00 +02:00
f4c1f1fe34 -> v1.28.2 (296) 2022-07-20 15:45:53 +02:00
9e85b9f828 aggiunta setup non presente in lista 2022-07-20 15:44:40 +02:00
a9fd55c01f Finish v1.28.1(295) 2022-07-18 10:56:05 +02:00
506a56a1a2 Finish v1.28.1(295) 2022-07-18 10:56:05 +02:00
c93e29606c -> v1.28.1 (295) 2022-07-18 10:55:57 +02:00
4adc40aa90 adeguamento rientro merce da lavorazione agricoper 2022-07-18 10:54:29 +02:00
4842a6091b Documento perdite (wms). La possibilità di scaricare l'intera anagrafica puo' essere effettuata soltanto una volta (a cache vuota)
Inserire il campo 'Annotazioni' quando si crea un collo  che sia editabile dall'utente (picking Vendita)
2022-07-13 17:29:26 +02:00
9faf4123ef fase di creazione dell'ordine di acquisto preimpostare gli articoli che hanno una qta proposta da acquistare 2022-07-11 13:11:52 +02:00
cdf5b413a2 Finish v1.28.0(294) 2022-07-07 18:56:19 +02:00
4dd2ccdb13 Finish v1.28.0(294) 2022-07-07 18:56:18 +02:00
56c54d3cde -> v1.28.0 (294) 2022-07-07 18:56:13 +02:00
19e2d5b869 Creata login page per layout large 2022-07-07 18:21:30 +02:00
0acf023556 Creata UI per smartphone del rientro merce 2022-07-07 17:51:46 +02:00
71f6dc83fb Vario 2022-06-29 18:54:11 +02:00
3479ee2b87 Finish v1.27.6(293) 2022-06-29 16:39:22 +02:00
609b9f1852 Finish v1.27.6(293) 2022-06-29 16:39:22 +02:00
23c98d9218 -> v1.27.6 (293) 2022-06-29 16:39:17 +02:00
57900a9617 bug fix: Nel picking da ordine, quando sparano alcune referenze (100142-100171), l'app si chiude in maniera anomala. 2022-06-29 16:36:46 +02:00
c3274a4311 corretto bug per in gestione linee e aggiu ta richiesta di recupero prima di chiudere gli ordini 2022-06-29 16:01:51 +02:00
356e2562da Finish v1.27.5(292) 2022-06-08 12:50:49 +02:00
63 changed files with 3096 additions and 801 deletions

View File

@@ -1,16 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetsSelectedWithDialog>
<targetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="20119B1E55" />
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\ValerioC.STUDIO-ML\.android\avd\Pixel_4_XL_API_30.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetsSelectedWithDialog>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-07-15T15:36:03.605659600Z" />
</component>
</project>

View File

@@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services'
android {
def appVersionCode = 292
def appVersionName = '1.27.5'
def appVersionCode = 297
def appVersionName = '1.28.3'
signingConfigs {
release {

View File

@@ -19,7 +19,7 @@ import it.integry.integrywmsnative.core.data_store.db.entity.Ordine;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColr;
import it.integry.integrywmsnative.core.data_store.db.entity.SqlMtbColt;
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 9, exportSchema = false)
@Database(entities = {ArticoloGriglia.class, Griglia.class, Ordine.class, ArticoloOrdine.class, SqlMtbColt.class, SqlMtbColr.class}, version = 10, exportSchema = false)
@TypeConverters({
DateConverter.class,
BigDecimalConverter.class

View File

@@ -53,6 +53,6 @@ public interface ArticoloGrigliaDao {
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId")
List<ArticoloGriglia> getArticoliFromGriglia(int grigliaId);
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND new_no_promo = 1")
@Query("SELECT * FROM articoli_griglia WHERE id_griglia = :grigliaId AND qta_ord >= 1")
List<ArticoloGriglia> getNewArticoliInGriglia(int grigliaId);
}

View File

@@ -71,6 +71,9 @@ public class ArticoloGriglia {
@ColumnInfo(name = "qta_proposta")
private float qtaProposta;
@ColumnInfo(name = "qta_ord")
private float qtaOrd;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
@@ -205,6 +208,14 @@ public class ArticoloGriglia {
this.newNoPromo = newNoPromo;
}
public float getQtaOrd() {
return qtaOrd;
}
public void setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
}
public String generateSystemNote() {
HashMap<String, String> pairs = new HashMap<>();
pairs.put("qta_proposta", String.valueOf(qtaProposta));
@@ -234,8 +245,7 @@ public class ArticoloGriglia {
articolo.setQtaProposta(BigDecimal.valueOf(this.getQtaProposta()));
articolo.setNewNoPromo(this.isNewNoPromo());
articolo.setSystemNote(generateSystemNote());
articolo.setQtaOrd(0);
articolo.setQtaOrd(this.getQtaOrd());
return articolo;
}

View File

@@ -50,6 +50,9 @@ public class Ordine {
@Ignore
private int countArticoli = 0;
@Ignore
private boolean orderNewProducts = false;
@ColumnInfo(name = "id_griglia")
private int idGriglia;
@@ -149,4 +152,13 @@ public class Ordine {
public void setDataOrdS(String dataOrd) {
setDataOrd(UtilityDate.recognizeDateWithExceptionHandler(dataOrd));
}
public boolean isOrderNewProducts() {
return orderNewProducts;
}
public Ordine setOrderNewProducts(boolean orderNewProducts) {
this.orderNewProducts = orderNewProducts;
return this;
}
}

View File

@@ -19,6 +19,7 @@ public class ArticoloDTO {
private float giacenza;
private float qtaPrevistaVendita;
private float qtaProposta;
private float qtaOrd;
public String getCodMart() {
@@ -151,6 +152,15 @@ public class ArticoloDTO {
return this;
}
public float getQtaOrd() {
return qtaOrd;
}
public ArticoloDTO setQtaOrd(float qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
public ArticoloGriglia toArticoloGriglia() {
ArticoloGriglia result = new ArticoloGriglia();
result.setBarCode(this.getBarCode());
@@ -164,6 +174,7 @@ public class ArticoloDTO {
result.setQtaMinOrdinabile(this.getQtaMinOrdinabile());
result.setGgScadenza(this.ggScadenza);
result.setNewNoPromo(this.newNoPromo);
result.setQtaOrd(this.getQtaOrd());
result.setGiacenza(this.giacenza);
result.setQtaPrevistaVendita(this.qtaPrevistaVendita);
result.setQtaProposta(this.qtaProposta);

View File

@@ -27,7 +27,6 @@ public class BaseDialogFragment extends DialogFragment {
private boolean mBarcodeListener = false;
@Override
public void show(FragmentManager manager, String tag) {
try {

View File

@@ -99,6 +99,10 @@ public abstract class BaseFragment extends Fragment {
}
}
public boolean onBackPressed() {
return false;
}
protected void popMe() {
if (requireActivity() instanceof IPoppableActivity) {
requireActivity().runOnUiThread(() -> {
@@ -107,6 +111,5 @@ public abstract class BaseFragment extends Fragment {
} else {
requireActivity().getSupportFragmentManager().popBackStack();
}
}
}

View File

@@ -0,0 +1,9 @@
package it.integry.integrywmsnative.core.interfaces.viewmodel_listeners;
public interface IOrdersLoadingListener {
void onOrderLoadingStarted();
void onOrderLoadingEnded();
}

View File

@@ -26,8 +26,6 @@ public class CommonRESTException {
put(MESSAGE_KEY, "Barcode non letto correttamente");
put(EXCEPTION_KEY, NoResultFromBarcodeException.class);
}});
}};

View File

@@ -36,7 +36,9 @@ public class ArticoloRESTConsumer extends _BaseRESTConsumer {
@Override
public void onResponse(Call<ServiceRESTResponse<MtbAart>> call, Response<ServiceRESTResponse<MtbAart>> response) {
analyzeAnswer(response, "getByBarcodeProd", (m) -> {
onComplete.run(response.body().getEntityList());
List<MtbAart> aartList = response.body().getEntityList();
aartList = Stream.of(aartList).filter(x -> x.getFlagStato().equalsIgnoreCase("A")).toList();
onComplete.run(aartList);
}, onFailed);
}

View File

@@ -78,9 +78,9 @@ public class GestSetupRESTConsumer extends _BaseRESTConsumer {
}
public static void getValues(List<StbGestSetup> stbGestSetupList, RunnableArgs<List<StbGestSetup>> onComplete, RunnableArgs<Exception> onFailed) {
public static void getValues(String codMdep, List<StbGestSetup> stbGestSetupList, RunnableArgs<List<StbGestSetup>> onComplete, RunnableArgs<Exception> onFailed) {
GestSetupRESTConsumerService service = RESTBuilder.getService(GestSetupRESTConsumerService.class);
service.getGestSetupValues(stbGestSetupList).enqueue(new Callback<>() {
service.getGestSetupValues(codMdep, stbGestSetupList).enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<StbGestSetup>>> call, Response<ServiceRESTResponse<List<StbGestSetup>>> response) {
analyzeAnswer(response, "GestSetup", onComplete, onFailed);

View File

@@ -28,6 +28,7 @@ public interface GestSetupRESTConsumerService {
@POST("gestSetupList")
Call<ServiceRESTResponse<List<StbGestSetup>>> getGestSetupValues(
@Query("codMdep") String codMdep,
@Body List<StbGestSetup> stbGestSetupList);
}

View File

@@ -46,11 +46,11 @@ public class MesRESTConsumer extends _BaseRESTConsumer {
});
}
public void getOrdiniLavorazione(String flagEvaso, String codJfas, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
public void getOrdiniLavorazione(String flagEvaso, String codJfas, String codAnag, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
mesRESTConsumerService.getOrdiniLavorazione(flagEvaso, codJfas)
.enqueue(new Callback<ServiceRESTResponse<List<OrdineLavorazioneDTO>>>() {
mesRESTConsumerService.getOrdiniLavorazione(null, flagEvaso, codJfas, codAnag)
.enqueue(new Callback<>() {
@Override
public void onResponse(Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> call, Response<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> response) {
analyzeAnswer(response, "getOrdiniLavorazione", (m) -> onComplete.run(response.body().getDto()), onFailed);
@@ -63,6 +63,7 @@ public class MesRESTConsumer extends _BaseRESTConsumer {
});
}
public void getOrdiniLavorazione(Date dateStart, String flagEvaso, String codJfas, RunnableArgs<List<OrdineLavorazioneDTO>> onComplete, RunnableArgs<Exception> onFailed) {
MesRESTConsumerService mesRESTConsumerService = RESTBuilder.getService(MesRESTConsumerService.class);
@@ -82,7 +83,8 @@ public class MesRESTConsumer extends _BaseRESTConsumer {
public void getLineeProduzione(String codJfasParent, RunnableArgs<List<JtbFasi>> onComplete, RunnableArgs<Exception> onFailed) {
Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {}.getType();
Type typeOfObjectsList = new TypeToken<ArrayList<JtbFasi>>() {
}.getType();
this.mSystemRESTConsumer.processSql(
"SELECT * FROM jtb_fasi WHERE cod_jfas_parent = " + UtilityDB.valueToString(codJfasParent),
typeOfObjectsList,

View File

@@ -22,4 +22,7 @@ public interface MesRESTConsumerService {
@GET("mes_v2/getOrdiniLavorazione")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas);
@GET("mes_v2/getOrdiniLavorazione")
Call<ServiceRESTResponse<List<OrdineLavorazioneDTO>>> getOrdiniLavorazione(@Query("startDate") String startDate, @Query("flagEvaso") String flagEvaso, @Query("codJfas") String codJfas, @Query("codAnag") String codAnag);
}

View File

@@ -48,6 +48,8 @@ public class DBSettingsModel {
private int onQtaTotInputChanged = 1;
private boolean flagAccettazioneUseQtaOrd = false;
private boolean flagPickLiberoAllowEmptyDest = false;
private boolean flagAskInfoAggiuntiveSpedizione = false;
private String filterFornitoreProd;
public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza;
@@ -364,4 +366,22 @@ public class DBSettingsModel {
this.flagOrdinaArticoliOnScan = flagOrdinaArticoliOnScan;
return this;
}
public boolean isFlagAskInfoAggiuntiveSpedizione() {
return flagAskInfoAggiuntiveSpedizione;
}
public DBSettingsModel setFlagAskInfoAggiuntiveSpedizione(boolean flagAskInfoAggiuntiveSpedizione) {
this.flagAskInfoAggiuntiveSpedizione = flagAskInfoAggiuntiveSpedizione;
return this;
}
public String getFilterFornitoreProd() {
return filterFornitoreProd;
}
public DBSettingsModel setFilterFornitoreProd(String filterFornitoreProd) {
this.filterFornitoreProd = filterFornitoreProd;
return this;
}
}

View File

@@ -258,6 +258,10 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("PRODUZIONE")
.setKeySection("FLAG_VERSAMENTO_DIRETTO"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("PRODUZIONE")
.setKeySection("FILTER_FORNTIORE_PROD"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
@@ -306,9 +310,25 @@ public class SettingsManager {
.setGestName("PICKING")
.setSection("PICKING_LIBERO")
.setKeySection("FLAG_ALLOW_EMPTY_DEST"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_PACKING_LIST_ON_CLOSE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_PRINT_ETICHETTE_ON_CLOSE"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_ALLOW_EMPTY_DEST"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("SPEDIZIONE")
.setKeySection("FLAG_ASK_INFO_AGGIUNTIVE"));
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
GestSetupRESTConsumer.getValues(codMdep, stbGestSetupList, list -> {
dbSettingsModelIstance.setDefaultCausaleRettificaGiacenze(getValueFromList(list, "SETUP", "DEFAULT_CAUSALE_RETTIFICA_GIACENZE", String.class));
dbSettingsModelIstance.setEnableCheckPartitaMagCheckPickingV(getValueFromList(list, "SETUP", "ENABLE_CHECK_PARTITA_MAG_PICKING_V", Boolean.class));
dbSettingsModelIstance.setFlagMultiClienteOrdV(getValueFromList(list, "SETUP", "FLAG_MULTI_CLIENTE_ORD_VENDITA", Boolean.class));
@@ -333,29 +353,24 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
dbSettingsModelIstance.setFlagOrdinaArticoliOnScan(getValueFromList(list, "ORDINI_A", "ORDINA_ARTICOLI_ON_SCAN", Boolean.class));
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", Boolean.class));
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(getValueFromList(list, "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", Boolean.class));
dbSettingsModelIstance.setFlagAskInfoAggiuntiveSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_ASK_INFO_AGGIUNTIVE", Boolean.class));
dbSettingsModelIstance.setFilterFornitoreProd(getValueFromList(list, "PRODUZIONE", "FILTER_FORNTIORE_PROD", String.class));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) {
if (notePerdita != null)
dbSettingsModelIstance.setNotePerditaDocInterni(Arrays.asList(notePerdita.split("\\|")));
}
Integer onNumCnfInputChanged = getValueFromList(list, "SETUP", "ON_NUM_CNF_INPUT_CHANGED", Integer.class);
if (onNumCnfInputChanged != null) {
if (onNumCnfInputChanged != null)
dbSettingsModelIstance.setOnNumCnfInputChanged(onNumCnfInputChanged);
}
Integer onQtaTotInputChanged = getValueFromList(list, "SETUP", "ON_QTA_TOT_INPUT_CHANGED", Integer.class);
if (onQtaTotInputChanged != null) {
if (onQtaTotInputChanged != null)
dbSettingsModelIstance.setOnQtaTotInputChanged(onQtaTotInputChanged);
}
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_PACKING_LIST_ON_CLOSE", codMdep, (value) -> {
dbSettingsModelIstance.setFlagPrintPackingListOnOrderClose(value);
GestSetupRESTConsumer.getBooleanValue("PICKING", "SPEDIZIONE", "FLAG_PRINT_ETICHETTE_ON_CLOSE", codMdep, (setupValue) -> {
dbSettingsModelIstance.setFlagPrintEtichetteOnOrderClose(setupValue);
if (onComplete != null) onComplete.run();
}, onFailed);
}, onFailed);
if (onComplete != null) onComplete.run();
}, onFailed);
}
@@ -365,7 +380,7 @@ public class SettingsManager {
StbGestSetup value = Stream.of(stbGestSetupList)
.filter(x -> x.getSection().equalsIgnoreCase(section) && x.getKeySection().equalsIgnoreCase(keySectionName))
.findFirst().get();
.findFirstOrElse(new StbGestSetup());
if (clazz == String.class) {
return clazz.cast(value.getValue());

View File

@@ -35,6 +35,13 @@ public class DialogSelectDocInfoViewModel {
public void init(DocInterniSetupDTO initialList) {
this.mDocInterniSetupDTO = initialList;
this.mTipoDoc = null;
this.mGruppoArt = null;
this.mFornitore = null;
this.mDataDoc = null;
this.mNumDoc = null;
this.mNote = null;
this.mListener = null;
}
public String getCodDtip() {

View File

@@ -19,6 +19,8 @@ public class GrigliaAcquistiChildDTO {
private float giacenza;
private float qtaPrevistaVendita;
private float qtaProposta;
private BigDecimal qtaOrd;
public String getCodMart() {
return codMart;
@@ -154,4 +156,13 @@ public class GrigliaAcquistiChildDTO {
this.newNoPromo = newNoPromo;
return this;
}
public BigDecimal getQtaOrd() {
return qtaOrd;
}
public GrigliaAcquistiChildDTO setQtaOrd(BigDecimal qtaOrd) {
this.qtaOrd = qtaOrd;
return this;
}
}

View File

@@ -250,6 +250,7 @@ public class DocInterniEditFormActivity extends BaseActivity implements DocInter
.setNotesMandatory(this.viewModel.isNotesMandatory())
.setDataScadMandatory(flagTracciabilita)
.setCanPartitaMagBeChanged(flagTracciabilita)
.setNumCnfEditable(false)
.setSuggestPartitaMag(data -> {
Date dataScad = data.getDataScad();
String partitaMag = null;

View File

@@ -26,7 +26,6 @@ import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.expansion.BaseActivity;
import it.integry.integrywmsnative.core.expansion.RunnableArgs;
import it.integry.integrywmsnative.core.model.MtbColr;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
import it.integry.integrywmsnative.databinding.ActivityProdDettaglioLineaBinding;
@@ -43,6 +42,7 @@ import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQua
public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDettaglioLineaViewModel.Listener {
private static final String DATA_KEY_LINE = "keyLinea";
private static final String DATA_KEY_FRAGMENT_LISTENER = "onFragmentClose";
private ActivityProdDettaglioLineaBinding mBinding;
public final ObservableField<String> listaOrd = new ObservableField<>();
@@ -54,6 +54,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
public final BindableString codMart = new BindableString();
public final BindableString partitaMag = new BindableString();
public final BindableString productDescription = new BindableString();
private Runnable onResumeRunnable = null;
private int barcodeScannerIstanceID = -1;
@@ -120,6 +121,13 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
renderOrdersChips();
}
});
getSupportFragmentManager()
.setFragmentResultListener(DATA_KEY_FRAGMENT_LISTENER, this, (requestKey, result) -> {
if (onResumeRunnable != null) {
onResumeRunnable.run();
onResumeRunnable = null;
}
});
}
private void renderOrdersChips() {
@@ -210,17 +218,6 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
onBackPressed();
}
public void askForLUBarcode() {
this.onLoadingEnded();
this.runOnUiThread(() -> {
DialogStartProduction.newInstance((dto) -> {
this.mViewModel.checkBarcodeAndStartOrdine(dto);
},
UtilityResources.getString(R.string.title_open_lu),
UtilityResources.getString(R.string.scan_lu_to_recover)
).show(getSupportFragmentManager(), "DialogStartProduction");
});
}
private void initBarcodeReader() {
barcodeScannerIstanceID = BarcodeManager.addCallback(new BarcodeCallbackDTO()
@@ -279,7 +276,7 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
getSupportFragmentManager()
.beginTransaction()
.add(R.id.frame_layout_container,
ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas()))
ProdRecuperoMaterialeFragment.newInstance(mViewModel.lineaProd.getValue().getCodJfas(), DATA_KEY_FRAGMENT_LISTENER))
.addToBackStack("ProdRecuperoMaterialeFragment")
.commit();
@@ -322,7 +319,18 @@ public class ProdDettaglioLineaActivity extends BaseActivity implements ProdDett
+ "<br /> <br/>" +
"Continuare?"),
null,
onConfirm,
() -> {
DialogSimpleMessageView.makeInfoDialog(
null,
Html.fromHtml("Vuoi recuperare del materiale prima di chiudere gli ordini?"),
null,
() -> {
onResumeRunnable = onConfirm;
this.requestMaterialRecover();
},
onConfirm
).show(getSupportFragmentManager(), "confirmOrderClose");
},
BarcodeManager::enable
).show(getSupportFragmentManager(), "confirmOrderClose");
});

View File

@@ -209,9 +209,6 @@ public class ProdDettaglioLineaViewModel {
return lineaProd.getValue();
}
public void beginMaterialRecover() {
this.mListener.askForLUBarcode();
}
public interface Listener extends ILoadingListener {
void onError(Exception ex);
@@ -228,8 +225,6 @@ public class ProdDettaglioLineaViewModel {
void onLineStop();
void askForLUBarcode();
void confirmOrderClose(Runnable onConfirm);
}

View File

@@ -37,18 +37,6 @@ public class DialogStartProduction extends BaseDialogFragment {
return fragment;
}
public static DialogStartProduction newInstance(RunnableArgs<BarcodeScanDTO> onScanSuccessful, String title, String label) {
Bundle args = new Bundle();
DialogStartProduction fragment = new DialogStartProduction();
fragment.setTitle(title);
fragment.setLabel(label);
fragment.setArguments(args);
fragment.setOnScanSuccessful(onScanSuccessful);
return fragment;
}
public String getTitle() {
return title;
}
@@ -108,8 +96,8 @@ public class DialogStartProduction extends BaseDialogFragment {
private void processBarcode(BarcodeScanDTO barcodeScanDTO) {
if (UtilityBarcode.isEan128(barcodeScanDTO)) {
this.onScanSuccessful.run(barcodeScanDTO);
this.dismiss();
this.onScanSuccessful.run(barcodeScanDTO);
} else {
this.onError(new Exception("Il barcode scansionato non è valido!"));
}

View File

@@ -60,6 +60,7 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
private int barcodeScannerIstanceID = -1;
private String codJfas;
private String fragmentResultKeyString;
private final ObservableArrayList<HistoryULsListModel> mHistoryULMutableData = new ObservableArrayList<>();
@@ -68,13 +69,20 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
}
public static ProdRecuperoMaterialeFragment newInstance() {
return newInstance(null);
return newInstance(null, null);
}
public static ProdRecuperoMaterialeFragment newInstance(String codJfas, String keyString) {
ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment();
if (keyString != null) {
fragment.setFragmentResultKeyString(keyString);
}
fragment.setCodJfas(codJfas);
return fragment;
}
public static ProdRecuperoMaterialeFragment newInstance(String codJfas) {
ProdRecuperoMaterialeFragment fragment = new ProdRecuperoMaterialeFragment();
fragment.setCodJfas(codJfas);
return fragment;
return newInstance(codJfas, null);
}
@Override
@@ -95,6 +103,14 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
this.initBarcodeReader();
this.initRecyclerView();
this.addOnPreDestroy(() -> {
if (!UtilityString.isNullOrEmpty(fragmentResultKeyString)) {
Bundle result = new Bundle();
result.putString(fragmentResultKeyString, "result");
getParentFragmentManager().setFragmentResult(fragmentResultKeyString, result);
}
});
return mBinding.getRoot();
}
@@ -134,6 +150,15 @@ public class ProdRecuperoMaterialeFragment extends BaseFragment implements ITitl
return this;
}
public String getFragmentResultKeyString() {
return fragmentResultKeyString;
}
public ProdRecuperoMaterialeFragment setFragmentResultKeyString(String fragmentResultKeyString) {
this.fragmentResultKeyString = fragmentResultKeyString;
return this;
}
private final RunnableArgs<BarcodeScanDTO> onScanSuccessful = data -> {
this.onLoadingStarted();

View File

@@ -115,7 +115,10 @@ public class ProdRecuperoMaterialeViewModel {
qtaDaEvadere = qtaDaEvadere.add(item.getQtaCol());
if (!UtilityBigDecimal.equalsTo(qtaDaEvadere, BigDecimal.ZERO)) {
numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf());
if(item.getMtbAart().isFlagQtaCnfFissaBoolean())
numCnfDaEvadere = UtilityBigDecimal.divide(qtaDaEvadere, item.getQtaCnf());
else numCnfDaEvadere = item.getNumCnf();
}
this.sendOnItemDispatched(item,

View File

@@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ObservableField;
import java.util.ArrayList;
import java.util.List;
@@ -19,7 +20,9 @@ import javax.inject.Inject;
import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.expansion.BaseFragment;
import it.integry.integrywmsnative.core.interfaces.ILifecycleFragment;
import it.integry.integrywmsnative.core.interfaces.IScrollableFragment;
import it.integry.integrywmsnative.core.interfaces.ITitledFragment;
import it.integry.integrywmsnative.core.model.MtbColr;
@@ -32,9 +35,18 @@ import it.integry.integrywmsnative.view.bottom_sheet__lu_content.BottomSheetFrag
import it.integry.integrywmsnative.view.bottom_sheet__mtb_colr_edit.BottomSheetMtbColrEditView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
public class ProdRientroMerceFragment extends BaseFragment implements ITitledFragment, IScrollableFragment, ProdRientroMerceViewModel.Listener, BottomSheetFragmentLUContentView.Listener, BottomSheetMtbColrEditView.Listener {
public class ProdRientroMerceFragment extends BaseFragment implements
ITitledFragment,
IScrollableFragment,
ILifecycleFragment,
ProdRientroMerceViewModel.Listener,
BottomSheetFragmentLUContentView.Listener,
BottomSheetMtbColrEditView.Listener,
ProdRientroMerceOrderListFragment.OnRefreshListener {
public final ObservableField<Boolean> isLargeLayout = new ObservableField<>(false);
@Inject
ProdRientroMerceViewModel mViewModel;
@@ -56,20 +68,47 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra
super.onCreate(savedInstanceState);
setRetainInstance(true);
boolean isLargeLayout = getResources().getBoolean(R.bool.large_layout);
this.isLargeLayout.set(isLargeLayout);
mProdRientroMerceOrderListFragment = ProdRientroMerceOrderListFragment.newInstance(mToolbar);
mProdRientroMerceOrderDetailFragment = ProdRientroMerceOrderDetailFragment.newInstance();
mProdRientroMerceOrderListFragment.setOnItemSelectedRunnable(mProdRientroMerceOrderDetailFragment::setOrder);
mProdRientroMerceOrderListFragment
.setOnItemSelectedRunnable(order -> {
if (!isLargeLayout) {
getChildFragmentManager()
.beginTransaction()
.show(mProdRientroMerceOrderDetailFragment)
.addToBackStack(ProdRientroMerceOrderDetailFragment.class.getName())
.commit();
}
mProdRientroMerceOrderDetailFragment.setOrder(order);
})
.setOnRefreshListener(this);
mProdRientroMerceOrderDetailFragment.setOnMtbColtClicked(item -> {
mBindings.bottomSheetMtbColrEdit.setMtbColr(item.getMtbColr().get(0));
mBindings.bottomSheetMtbColrEdit.expand();
});
getChildFragmentManager()
.beginTransaction()
.replace(R.id.order_list_fragment, mProdRientroMerceOrderListFragment)
.replace(R.id.order_detail_fragment, mProdRientroMerceOrderDetailFragment)
.commit();
if (isLargeLayout) {
getChildFragmentManager()
.beginTransaction()
.replace(R.id.left_side_fragment_container, mProdRientroMerceOrderListFragment)
.replace(R.id.right_side_fragment_container, mProdRientroMerceOrderDetailFragment)
.commit();
} else {
getChildFragmentManager()
.beginTransaction()
.add(R.id.full_width_container, mProdRientroMerceOrderListFragment)
.add(R.id.full_width_container, mProdRientroMerceOrderDetailFragment)
.hide(mProdRientroMerceOrderDetailFragment)
.commit();
}
MainApplication.appComponent
.prodRientroMerceComponent()
@@ -82,6 +121,8 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra
@Nullable Bundle savedInstanceState) {
mBindings = DataBindingUtil.inflate(LayoutInflater.from(getActivity()), R.layout.fragment_prod_rientro_merce, container, false);
mBindings.setLifecycleOwner(this);
mBindings.setView(this);
mBindings.setViewmodel(mViewModel);
mViewModel.setListener(this);
@@ -94,13 +135,13 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(savedInstanceState == null) {
if (savedInstanceState == null) {
this.mViewModel.getOrdiniLavorazioneAperti().observe(this.getViewLifecycleOwner(), this::ordersUpdated);
mViewModel.init();
mViewModel.refreshOrderList();
}
}
@Override
public void onCreateActionBar(AppCompatTextView titleText, Context context) {
mAppBarTitle = titleText;
@@ -139,7 +180,6 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra
}
private void initBottomSheet() {
mBindings.bottomSheetMtbColrEdit.setListener(this);
mBindings.bottomSheetMtbColrEdit.disableEditButton();
@@ -157,7 +197,33 @@ public class ProdRientroMerceFragment extends BaseFragment implements ITitledFra
DialogSimpleMessageView.makeWarningDialog(new SpannableString(text),
null,
() -> mProdRientroMerceOrderDetailFragment.deleteMtbColr(mtbColr),
() -> {}
).show(getActivity().getSupportFragmentManager(), "tag");
() -> {
}
).show(requireActivity().getSupportFragmentManager(), "tag");
}
@Override
public void onOrderLoadingStarted() {
BarcodeManager.disable();
this.mProdRientroMerceOrderListFragment.onOrderLoadingStarted();
}
@Override
public void onOrderLoadingEnded() {
BarcodeManager.enable();
this.mProdRientroMerceOrderListFragment.onOrderLoadingEnded();
}
@Override
public void onRefresh() {
this.mViewModel.refreshOrderList();
}
@Override
public void onPreDestroy(Runnable onComplete) {
if(getChildFragmentManager().getBackStackEntryCount() > 0)
getChildFragmentManager().popBackStack();
else onComplete.run();
}
}

View File

@@ -7,7 +7,9 @@ import java.util.List;
import javax.inject.Inject;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.ILoadingListener;
import it.integry.integrywmsnative.core.interfaces.viewmodel_listeners.IOrdersLoadingListener;
import it.integry.integrywmsnative.core.rest.consumers.MesRESTConsumer;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.gest.prod_versamento_materiale.dto.OrdineLavorazioneDTO;
import it.integry.integrywmsnative.gest.spedizione.exceptions.OrdersLoadException;
@@ -25,12 +27,12 @@ public class ProdRientroMerceViewModel {
this.mMesRESTConsumer = mesRESTConsumer;
}
public void init() {
new Thread(this::sendOnLoadingStarted).start();
this.mMesRESTConsumer.getOrdiniLavorazione("I", null, ordiniLavorazioneList -> {
public void refreshOrderList() {
new Thread(this::sendOnOrdersLoadingStarted).start();
String codAnag = SettingsManager.iDB().getFilterFornitoreProd();
this.mMesRESTConsumer.getOrdiniLavorazione("I", null, codAnag, ordiniLavorazioneList -> {
this.mOrdiniLavorazioneAperti.postValue(ordiniLavorazioneList);
this.sendOnLoadingEnded();
this.sendOnOrdersLoadingEnded();
}, ex -> this.sendError(new OrdersLoadException(ex)));
}
@@ -51,12 +53,20 @@ public class ProdRientroMerceViewModel {
if (this.mListener != null) mListener.onLoadingEnded();
}
private void sendOnOrdersLoadingStarted() {
if (this.mListener != null) mListener.onOrderLoadingStarted();
}
private void sendOnOrdersLoadingEnded() {
if (this.mListener != null) mListener.onOrderLoadingEnded();
}
private void sendError(Exception ex) {
if (this.mListener != null) mListener.onError(ex);
}
public interface Listener extends ILoadingListener {
public interface Listener extends ILoadingListener, IOrdersLoadingListener {
void onDataSaved();

View File

@@ -82,6 +82,8 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
public ObservableField<BigDecimal> sumColliNumber = new ObservableField<>(BigDecimal.ZERO);
public ObservableField<BigDecimal> sumNetKG = new ObservableField<>(BigDecimal.ZERO);
public ObservableField<BigDecimal> sumGrossKG = new ObservableField<>(BigDecimal.ZERO);
public ObservableField<Integer> progress = new ObservableField<>(0);
public boolean isOrderColli = false;
public ProdRientroMerceOrderDetailFragment() {
// Required empty public constructor
@@ -113,11 +115,16 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
mViewModel.setListener(this);
if (currentOrder.getValue() != null) {
refreshOrder();
isOrderColli = currentOrder.getValue().getQtaCnf().compareTo(BigDecimal.ONE) == 0;
}
this.mViewModel.mtbColtsOfOrder.observe(getViewLifecycleOwner(), this::refreshList);
this.initRecyclerView();
this.initULScaleBluetoothConnection();
mBindings.executePendingBindings();
return mBindings.getRoot();
}
@@ -182,11 +189,15 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
}
public void setOrder(OrdineLavorazioneDTO order) {
currentOrder.postValue(order);
mBindings.invalidateAll();
mAdapter.clearDataset();
currentOrder.setValue(order);
mViewModel.setOrder(order);
refreshOrder();
}
private void refreshOrder() {
if (mBindings != null) mBindings.invalidateAll();
if (mAdapter != null) mAdapter.clearDataset();
if (mViewModel != null) mViewModel.setOrder(currentOrder.getValue());
}
private void refreshList(List<MtbColt> mtbColts) {
@@ -205,6 +216,7 @@ public class ProdRientroMerceOrderDetailFragment extends BaseFragment implements
}));
sumColliNumber.set(sumColli.get());
sumGrossKG.set(sumGross.get());
progress.set(currentOrder.getValue().getProgress());
sumNetKG.set(sumNet.get());
} else {
sumLUNumber.set(BigDecimal.ZERO);

View File

@@ -129,15 +129,18 @@ public class ProdRientroMerceOrderListAdapter extends SectionedRecyclerViewAdapt
case START:
holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_play_circle_filled_24dp);
holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.green_800), android.graphics.PorterDuff.Mode.SRC_IN);
holder.mBinding.orderProgress.setVisibility(View.VISIBLE);
break;
case PAUSE:
holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_pause_circle_filled_24dp);
holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.yellow_800), android.graphics.PorterDuff.Mode.SRC_IN);
holder.mBinding.orderProgress.setVisibility(View.VISIBLE);
break;
case SCHEDULED:
default:
holder.mBinding.ordineStateIcon.setImageResource(R.drawable.ic_clock_circle_outline_24dp);
holder.mBinding.ordineStateIcon.setColorFilter(ContextCompat.getColor(mContext, R.color.blue_700), android.graphics.PorterDuff.Mode.SRC_IN);
holder.mBinding.orderProgress.setVisibility(View.GONE);
break;
}
@@ -166,6 +169,8 @@ public class ProdRientroMerceOrderListAdapter extends SectionedRecyclerViewAdapt
holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE);
} else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE);
holder.mBinding.orderProgress.setProgress(listModel.getProgress());
holder.mBinding.executePendingBindings();
holder.mBinding.getRoot().setOnClickListener(v -> {

View File

@@ -36,12 +36,10 @@ import it.integry.integrywmsnative.ui.SimpleDividerItemDecoration;
public class ProdRientroMerceOrderListFragment extends Fragment {
private final ObservableArrayList<ProdRientroMerceOrderListModel> mOrdiniApertiMutableData = new ObservableArrayList<>();
private FragmentProdRientroMerceOrderListBinding mBindings = null;
private RunnableArgs<OrdineLavorazioneDTO> mOnItemSelectedRunnable;
private ElevatedToolbar mToolbar;
private OnRefreshListener onRefreshListener;
public ProdRientroMerceOrderListFragment() {
// Required empty public constructor
@@ -72,7 +70,7 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
mBindings.setLifecycleOwner(this);
if(savedInstanceState == null) this.initRecyclerView();
if (savedInstanceState == null) this.initRecyclerView();
return mBindings.getRoot();
}
@@ -86,13 +84,18 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
ProdRientroMerceOrderListAdapter prodRientroMerceOrderListAdapter = new ProdRientroMerceOrderListAdapter(getActivity(), mOrdiniApertiMutableData)
.setEmptyView(this.mBindings.emptyView)
.setOnItemChecked(x -> {
if(mOnItemSelectedRunnable != null) mOnItemSelectedRunnable.run(x.getOriginalModel());
if (mOnItemSelectedRunnable != null)
mOnItemSelectedRunnable.run(x.getOriginalModel());
});
this.mBindings.mainList.setAdapter(prodRientroMerceOrderListAdapter);
this.mBindings.mainList.setLayoutManager(new LinearLayoutManager(getActivity()));
this.mToolbar.setRecyclerView(mBindings.mainList);
this.mBindings.swiperefresh.setOnRefreshListener(() -> {
if (onRefreshListener != null) onRefreshListener.onRefresh();
});
}
public void pushOrderList(List<OrdineLavorazioneDTO> orderList) {
@@ -101,6 +104,14 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
}
public void onOrderLoadingStarted() {
this.mBindings.swiperefresh.setRefreshing(true);
}
public void onOrderLoadingEnded() {
this.mBindings.swiperefresh.setRefreshing(false);
}
private List<ProdRientroMerceOrderListModel> convertDataModelToListModel(List<OrdineLavorazioneDTO> dataList) {
@@ -109,7 +120,7 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
.thenComparing(ComparatorCompat.comparing(ordineLavorazioneDTO -> ordineLavorazioneDTO.getDataOrd() != null ? ordineLavorazioneDTO.getDataOrd() : "zzzzzzzz")).reversed()
.thenComparing(ComparatorCompat.comparing(OrdineLavorazioneDTO::getNumOrd));
if(dataList == null) return new ArrayList<>();
if (dataList == null) return new ArrayList<>();
List<ProdRientroMerceOrderListModel> notHiddenElements = Stream.of(dataList)
.sorted(comparator)
@@ -131,8 +142,12 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
listModel.setGroupTitle(x.getCodJfas());
if(!UtilityString.isNullOrEmpty(x.getRagSocAnag()))
listModel.setPreDescription("Provenienza: " + x.getRagSocAnag());
if (!UtilityString.isNullOrEmpty(x.getDataConsCommessa())) {
listModel.setPreDescription("Consegna: " + UtilityDate.formatDate(x.getDataConsCommessaD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
} else {
/* if (!UtilityString.isNullOrEmpty(x.getRagSocAnag()))
listModel.setPreDescription("Provenienza: " + x.getRagSocAnag());*/
}
String testataOrdString = "" + x.getNumOrd();
listModel.setDescription(testataOrdString);
@@ -141,11 +156,13 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
listModel.setRightDescription(x.getCodJcom() != null ? (x.getDescCommessa() + " (" + x.getCodJcom() + ")") : "");
try {
listModel.setProgress(x.getProgress());
listModel.setRightSubDescription(x.getNumCnf().stripTrailingZeros().toPlainString() + " COL");
/*try {
listModel.setRightSubDescription(UtilityDate.formatDate(x.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN));
} catch (Exception ex) {
}
}*/
listModel.setOriginalModel(x);
@@ -164,4 +181,13 @@ public class ProdRientroMerceOrderListFragment extends Fragment {
public RecyclerView getList() {
return mBindings.mainList;
}
public ProdRientroMerceOrderListFragment setOnRefreshListener(OnRefreshListener onRefreshListener) {
this.onRefreshListener = onRefreshListener;
return this;
}
public interface OnRefreshListener {
void onRefresh();
}
}

View File

@@ -11,6 +11,7 @@ public class ProdRientroMerceOrderListModel implements Cloneable {
private String subDescription;
private String rightDescription;
private String rightSubDescription;
private int progress;
private boolean hidden;
@@ -105,4 +106,13 @@ public class ProdRientroMerceOrderListModel implements Cloneable {
START,
SCHEDULED
}
public int getProgress() {
return progress;
}
public ProdRientroMerceOrderListModel setProgress(int progress) {
this.progress = progress;
return this;
}
}

View File

@@ -1,6 +1,7 @@
package it.integry.integrywmsnative.gest.prod_versamento_materiale.dto;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import it.integry.integrywmsnative.core.di.BindableFloat;
@@ -50,6 +51,7 @@ public class OrdineLavorazioneDTO {
private String dataScad;
private String partitaMagSuggested;
private String dataScadSuggested;
@@ -90,6 +92,8 @@ public class OrdineLavorazioneDTO {
private String descCommessa;
private String dataConsCommessa;
private BigDecimal prodStd;
private Object mtbColtToEdit;
@@ -135,6 +139,7 @@ public class OrdineLavorazioneDTO {
public String getDataOrd() {
return dataOrd;
}
public Date getDataOrdD() {
return UtilityDate.recognizeDateWithExceptionHandler(dataOrd);
}
@@ -490,4 +495,32 @@ public class OrdineLavorazioneDTO {
public OrdineLavorazioneStatoEnum getStatoEnum() {
return OrdineLavorazioneStatoEnum.fromString(getStato());
}
public String getDataConsCommessa() {
return dataConsCommessa;
}
public Date getDataConsCommessaD() {
return UtilityDate.recognizeDateWithExceptionHandler(getDataConsCommessa());
}
public void setDataConsCommessa(String dataConsCommessa) {
this.dataConsCommessa = dataConsCommessa;
}
public int getProgress() {
int progress = 0;
if (this.getQtaProd().compareTo(BigDecimal.ZERO) > 0) {
if (this.getQtaTrasferite().compareTo(this.getQtaProd()) > 0) {
progress = 100;
} else {
progress = this.getQtaTrasferite().multiply(BigDecimal.valueOf(100)).divide(this.getQtaProd(), 0, RoundingMode.UP).intValue();
}
}
return progress;
}
}

View File

@@ -108,8 +108,9 @@ public class PVOrdineAcquistoEditActivity extends BaseActivity implements PVOrdi
mBinding.closeActivityFab.close(false);
mBinding.scanArtSpinner.setVisibility(articoli.size() > 0 ? View.GONE : View.VISIBLE);
if (articoli.isEmpty() && isOrderNewProdsForced()) {
if (mOrdine.isOrderNewProducts() && articoli.isEmpty() && isOrderNewProdsForced()) {
this.mViewModel.orderNewProducts();
mOrdine.setOrderNewProducts(false);
}
});

View File

@@ -220,7 +220,6 @@ public class PVOrdineAcquistoEditViewModel {
.isEmpty()
) {
ArticoloOrdine dto = articolo.convertToArticoloOrdine(mCurrentOrdine);
dto.setQtaOrd(dto.getQtaCnf());
articoliToSave.add(dto);
}
});

View File

@@ -75,6 +75,7 @@ public class OrdineAcquistoPvHelper {
Ordine ordine = new Ordine();
ordine.setDataIns(UtilityDate.getDateInstance());
ordine.setIdGriglia(griglia.getGrigliaId());
ordine.setOrderNewProducts(true);
mOrdineRepository.insert(ordine, id -> {
ordine.setOrdineId(id);
onSuccess.run(ordine);

View File

@@ -44,6 +44,7 @@ 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.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.rest.model.OrdineUscitaInevasoDTO;
import it.integry.integrywmsnative.core.rest.model.SitArtOrdDTO;
@@ -72,6 +73,7 @@ import it.integry.integrywmsnative.view.dialogs.ask_should_print.DialogAskShould
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleInputHelper;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
import it.integry.integrywmsnative.view.dialogs.choose_batch_lot.DialogChooseBatchLotView;
import it.integry.integrywmsnative.view.dialogs.info_aggiuntive_lu.InfoAggiuntiveLUDialog;
import it.integry.integrywmsnative.view.dialogs.input_peso_lu.DialogInputPeso;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2DTO;
import it.integry.integrywmsnative.view.dialogs.input_quantity_v2.DialogInputQuantityV2View;
@@ -938,4 +940,9 @@ public class SpedizioneActivity extends BaseActivity implements SpedizioneViewMo
}
}
}
@Override
public void onInfoAggiuntiveRequired(MtbColt mtbColt, RunnableArgss<String, MtbTCol> onComplete) {
InfoAggiuntiveLUDialog.newInstance(mtbColt, onComplete).show(getSupportFragmentManager(), "InfoAggiuntiveLUDialog");
}
}

View File

@@ -43,6 +43,7 @@ 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.model.MtbPartitaMag;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.model.dto.PickDataDTO;
import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
import it.integry.integrywmsnative.core.report.ReportType;
@@ -1617,14 +1618,36 @@ public class SpedizioneViewModel {
} else {
if (mDefaultSegnoCol == -1) {
Runnable saveAction = () -> {
mColliMagazzinoRESTConsumer.updateDataFine(
mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> {
if (shouldPrint)
printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts));
else {
postCloseOperations(generatedMtbColts);
}
}), this::sendError);
if (SettingsManager.iDB().isFlagAskInfoAggiuntiveSpedizione()) {
this.mListener.onInfoAggiuntiveRequired(mCurrentMtbColt, (note, mtbTcol) -> {
mCurrentMtbColt.setAnnotazioni(note);
if (mtbTcol != null) {
mCurrentMtbColt.setMtbTCol(mtbTcol);
mCurrentMtbColt.setCodTcol(mtbTcol.getCodTcol());
} else {
mCurrentMtbColt.setMtbTCol(null);
mCurrentMtbColt.setCodTcol(null);
}
mColliMagazzinoRESTConsumer.updateDataFine(
mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> {
if (shouldPrint)
printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts));
else {
postCloseOperations(generatedMtbColts);
}
}), this::sendError);
});
} else {
mColliMagazzinoRESTConsumer.updateDataFine(
mCurrentMtbColt, () -> distribuisciLU((generatedMtbColts) -> {
if (shouldPrint)
printCollo(generatedMtbColts, () -> this.postCloseOperations(generatedMtbColts));
else {
postCloseOperations(generatedMtbColts);
}
}), this::sendError);
}
};
if (mShouldAskPesoLU) {
@@ -1882,6 +1905,7 @@ public class SpedizioneViewModel {
.setCodAnag(ord.getCodAnagOrd());
return ordV;
}).toList();
dto.setPrintList(closedOrders);
printClosedOrders(dto, this::sendOnOrderClosed, ex -> this.sendLUPrintError(ex, this::sendOnLoadingEnded));
}
@@ -1991,6 +2015,7 @@ public class SpedizioneViewModel {
boolean canBatchLotBeChanged,
RunnableArgss<PickedQuantityDTO, Boolean> onComplete);
void onInfoAggiuntiveRequired(MtbColt currentMtbColt, RunnableArgss<String, MtbTCol> onComplete);
void onLUPositionChangeRequest(RunnableArgss<Boolean, MtbDepoPosizione> onComplete);

View File

@@ -26,9 +26,11 @@ import it.integry.integrywmsnative.MainApplication;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.model.MtbColt;
import it.integry.integrywmsnative.core.model.MtbTCol;
import it.integry.integrywmsnative.core.utility.UtilityDialog;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.databinding.DialogNoteAggiuntiveNuovaUlBinding;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloAdapter;
import it.integry.integrywmsnative.view.dialogs.input_lu_prod.adapter.DialogInputLUProdTipoColloListModel;
@@ -40,20 +42,24 @@ public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAg
private DialogNoteAggiuntiveNuovaUlBinding mBindings;
private final RunnableArgss<String, MtbTCol> mOnComplete;
private MtbColt currentMtbColt;
private DialogInputLUProdTipoColloAdapter codTcolArrayAdapter = null;
public ObservableField<String> additionalNotes = new ObservableField<>();
public ObservableField<String> selectedMtbTcol = new ObservableField<>();
public ObservableField<DialogInputLUProdTipoColloListModel> currentMtbTCol = new ObservableField<>();
public static InfoAggiuntiveLUDialog newInstance(@NotNull RunnableArgss<String, MtbTCol> onComplete) {
return new InfoAggiuntiveLUDialog(onComplete);
return new InfoAggiuntiveLUDialog(null, onComplete);
}
private InfoAggiuntiveLUDialog(@NotNull RunnableArgss<String, MtbTCol> onComplete) {
public static InfoAggiuntiveLUDialog newInstance(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete) {
return new InfoAggiuntiveLUDialog(mtbColt, onComplete);
}
private InfoAggiuntiveLUDialog(MtbColt mtbColt, @NotNull RunnableArgss<String, MtbTCol> onComplete) {
super();
this.mOnComplete = onComplete;
this.currentMtbColt = mtbColt;
}
@@ -121,9 +127,17 @@ public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAg
this.mViewModel.getTipiCollo().observe(getViewLifecycleOwner(), tipiCollo -> {
codTcolArrayAdapter = new DialogInputLUProdTipoColloAdapter(getActivity(), R.layout.array_adapter_single_item, tipiCollo);
mBindings.filledExposedDropdownCodTcol.setAdapter(codTcolArrayAdapter);
if (currentMtbColt != null && !UtilityString.isNullOrEmpty(currentMtbColt.getCodTcol()) && UtilityString.isNullOrEmpty(this.selectedMtbTcol.get())) {
MtbTCol tipoPedana = Stream.of(tipiCollo).filter(x -> x.getCodTcol().equalsIgnoreCase(currentMtbColt.getCodTcol())).findFirstOrElse(null);
if (tipoPedana != null) {
this.selectedMtbTcol.set(tipoPedana.getCodTcol() + " - " + tipoPedana.getDescrizione());
}
}
});
this.mBindings.filledExposedDropdownCodTcol.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@@ -141,6 +155,9 @@ public class InfoAggiuntiveLUDialog extends BaseDialogFragment implements InfoAg
mBindings.buttonConfirm.setOnClickListener(v -> {
dismiss();
});
}
if (this.currentMtbColt != null) {
this.additionalNotes.set(currentMtbColt.getAnnotazioni());
}
}
}

View File

@@ -11,6 +11,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -147,7 +148,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI
this.init();
if(mBluetoothDeviceInterface != null) {
if (mBluetoothDeviceInterface != null) {
// Listen to bluetooth events
mBluetoothDeviceInterface.setListeners(this::onMessageReceived, this::onMessageSent, x -> this.onError(new Exception(x)));
enabledBluetoothDevice.set(true);
@@ -400,7 +401,11 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI
// Toast.makeText(requireActivity(), "Leggo peso uaglio", Toast.LENGTH_SHORT).show();
// Let's send a message:
mBluetoothDeviceInterface.sendMessage("GW\r");
if (mBluetoothDeviceInterface != null) {
mBluetoothDeviceInterface.sendMessage("GW\r");
} else {
Toast.makeText(requireActivity(), "Nessun dispositivo BLUETOOTH configurato nelle impostazioni.", Toast.LENGTH_SHORT).show();
}
}
private void onMessageSent(String request) {
@@ -412,8 +417,8 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI
String tmpResp = response.replace(".", "");
BigDecimal grossWeight = new BigDecimal(tmpResp.substring(2,7));
BigDecimal netWeight = new BigDecimal(tmpResp.substring(8,13));
BigDecimal grossWeight = new BigDecimal(tmpResp.substring(2, 7));
BigDecimal netWeight = new BigDecimal(tmpResp.substring(8, 13));
mViewModel.setPesoNetto(netWeight);
mViewModel.setPesoLordo(grossWeight);
@@ -424,7 +429,7 @@ public class DialogInputLUProdView extends BaseDialogFragment implements DialogI
if (this.mViewModel.validate()) {
this.mOnComplete.run(this.mViewModel.getResult());
if(mBluetoothDeviceInterface != null)
if (mBluetoothDeviceInterface != null)
mBluetoothDeviceInterface.setListeners(null, null, null);
dismiss();

View File

@@ -31,6 +31,7 @@ public class DialogInputQuantityV2DTO {
private boolean isDataScadMandatory = false;
private boolean isNotesAllowed = false;
private boolean isNotesMandatory = false;
private boolean isNumCnfEditable = true;
private boolean isFocusOnStart = true;
private boolean canLUBeClosed;
private boolean saveOnImeDone = false;
@@ -249,6 +250,15 @@ public class DialogInputQuantityV2DTO {
return this;
}
public boolean isNumCnfEditable() {
return isNumCnfEditable;
}
public DialogInputQuantityV2DTO setNumCnfEditable(boolean numCnfEditable) {
isNumCnfEditable = numCnfEditable;
return this;
}
public RunnableArgsWithReturn<DialogInputQuantityV2ViewModel, String> getSuggestPartitaMag() {
return suggestPartitaMag;
}

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.text.InputType;
import android.text.SpannableString;
@@ -43,6 +44,7 @@ import it.integry.integrywmsnative.core.model.MtbAart;
import it.integry.integrywmsnative.core.model.MtbUntMis;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
import it.integry.integrywmsnative.core.utility.UtilityFocus;
import it.integry.integrywmsnative.core.utility.UtilityObservable;
import it.integry.integrywmsnative.databinding.DialogInputQuantityV2Binding;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@@ -81,6 +83,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
public ObservableField<Boolean> enabledChangePartitaMag = new ObservableField<>(true);
public ObservableField<Boolean> enabledNotes = new ObservableField<>(false);
public ObservableField<Boolean> enabledLUCloseButton = new ObservableField<>(true);
private Handler mHandler = new Handler();
private Context context;
@@ -170,7 +173,14 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
}
this.onLoadingEnded();
if (mDialogInputQuantityV2DTO.isFocusOnStart()) {
mBindings.inputNumCnfText.requestFocus();
mHandler.postDelayed(() -> {
if (mDialogInputQuantityV2DTO.isNumCnfEditable()) {
mBindings.inputNumCnfText.requestFocus();
} else {
UtilityFocus.focusTextBox(requireContext(), mBindings.inputQtaTotText);
}
}, 1000);
}
return mBindings.getRoot();
}
@@ -240,11 +250,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
Date minDataScad = calendar.getTime();
if (minDataScad.after(value) && value.after(new Date())) {
DialogSimpleMessageView
.makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> {
this.mViewModel.setDataScad(value);
}, () -> {
this.currentDataScad.set(null);
})
.makeWarningDialog(new SpannableString("La data selezionata è precedente alla data di scadenza consigliata per l'articolo scelto ( " + mtbAart.getGgScadPartita() + " giorni) . Continuare?"), null, () -> this.mViewModel.setDataScad(value), () -> this.currentDataScad.set(null))
.show(requireActivity().getSupportFragmentManager(), "tag");
} else {
this.mViewModel.setDataScad(value);
@@ -325,7 +331,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
if (!this.enabledQtaTot.get()) {
this.enabledQtaTot.set(true);
} else if (!this.enabledNumCnf.get()) {
this.enabledNumCnf.set(true);
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable());
}
}
});
@@ -334,7 +340,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
toggleTextInputLayoutError(textColorsQtaTot, this.mBindings.inputQtaTotLayout, value);
if (this.mViewModel.mtbAart.get().isFlagQtaCnfFissaBoolean()) {
this.enabledNumCnf.set(!value);
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable() && !value);
} else {
if (value) {
if (this.mViewModel.blockedQtaCnf.get()) {
@@ -346,7 +352,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
if (!this.enabledQtaCnf.get()) {
this.enabledQtaCnf.set(true);
} else if (!this.enabledNumCnf.get()) {
this.enabledNumCnf.set(true);
this.enabledNumCnf.set(this.mDialogInputQuantityV2DTO.isNumCnfEditable());
}
}
}
@@ -406,7 +412,7 @@ public class DialogInputQuantityV2View extends BaseDialogFragment implements Dia
this.enabledLUCloseButton.set(this.mDialogInputQuantityV2DTO.isCanLUBeClosed());
this.currentTaraArticolo.set(this.mViewModel.getMtbAart().getTaraKg());
if (this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) {
if (this.mDialogInputQuantityV2DTO.getMtbAart().isFlagQtaCnfFissaBoolean() && this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd() != null && !this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().equals(BigDecimal.ZERO) && !(this.mDialogInputQuantityV2DTO.getTotalNumCnfOrd().intValue() == 0)) {
int numCnftoTake = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().divide(this.mDialogInputQuantityV2DTO.getQtaCnfOrd(), 0, RoundingMode.DOWN).intValue();
this.currentTextNumCnfToTake.set(numCnftoTake);
int qtaText = this.mDialogInputQuantityV2DTO.getTotalQtaOrd().intValue() % this.mDialogInputQuantityV2DTO.getQtaCnfOrd().intValue();

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorRipple"> <!-- ripple color -->
<!-- for Button -->
<item>
<shape android:shape="rectangle">
<solid android:color="@color/full_white"/>
</shape>
</item>
</ripple>

View File

@@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="view"
type="it.integry.integrywmsnative.gest.login.LoginActivity" />
</data>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimarySurface"
android:gravity="center">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="32dp"
app:cardCornerRadius="16dp">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp"
android:gravity="center_horizontal">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:adjustViewBounds="true"
android:src="@drawable/logo_integry_testo" />
<!-- Username Label -->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:errorText="@{view.usernameError}"
app:hintTextAppearance="@style/hint_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="300dp"
android:hint="Username"
android:inputType="textEmailAddress"
app:binding="@{view.username}" />
</com.google.android.material.textfield.TextInputLayout>
<!-- Password Label -->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:errorText="@{view.passwordError}"
app:hintTextAppearance="@style/hint_text"
app:passwordToggleEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="300dp"
android:hint="Password"
android:inputType="textPassword"
app:binding="@{view.password}" />
</com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/login_checkbox_custom_server"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="@{view.customSettingsCheckboxEnabled}"
android:text="@string/action_customize_server_settings"
app:checked="@{view.customSettingsCheckboxChecked}" />
<net.cachapa.expandablelayout.ExpandableLayout
android:id="@+id/login_layout_server_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="12dp"
app:el_duration="400"
app:el_expanded_bind="@{view.customSettingsCheckboxChecked}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--Host Label-->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorText="@{view.codAziendaError}"
app:hintTextAppearance="@style/hint_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_cod_azienda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Codice azienda"
android:inputType="text"
app:binding="@{view.codAzienda}" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</net.cachapa.expandablelayout.ExpandableLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_login"
style="@style/Button.PrimaryFull"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp"
android:minWidth="170dp"
android:enabled="@{view.loginButtonEnabled}"
android:text="@string/login"
app:onClick="@{() -> view.login()}" />
</androidx.appcompat.widget.LinearLayoutCompat>
</ScrollView>
</androidx.cardview.widget.CardView>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>

File diff suppressed because it is too large Load Diff

View File

@@ -60,7 +60,7 @@
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="end"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:adjustViewBounds="true"
android:src="@drawable/ic_search_black_24dp"
android:onClick="@{()->view.manualSearch()}"

View File

@@ -10,122 +10,124 @@
</data>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/logo_integry_testo" />
<!-- Username Label -->
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:errorText="@{view.usernameError}"
app:hintTextAppearance="@style/hint_text"
style="@style/TextInputLayout.OutlinePrimary">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_username"
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"
android:inputType="textEmailAddress"
app:binding="@{view.username}" />
</com.google.android.material.textfield.TextInputLayout>
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<!-- Password Label -->
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:errorText="@{view.passwordError}"
app:hintTextAppearance="@style/hint_text"
app:passwordToggleEnabled="true"
style="@style/TextInputLayout.OutlinePrimary">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="24dp"
android:src="@drawable/logo_integry_testo" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"
app:binding="@{view.password}" />
</com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/login_checkbox_custom_server"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="@{view.customSettingsCheckboxEnabled}"
android:text="@string/action_customize_server_settings"
app:checked="@{view.customSettingsCheckboxChecked}" />
<net.cachapa.expandablelayout.ExpandableLayout
android:id="@+id/login_layout_server_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="12dp"
app:el_duration="400"
app:el_expanded_bind="@{view.customSettingsCheckboxChecked}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--Host Label-->
<!-- Username Label -->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorText="@{view.codAziendaError}"
app:hintTextAppearance="@style/hint_text"
style="@style/TextInputLayout.OutlinePrimary">
android:layout_marginBottom="8dp"
app:errorText="@{view.usernameError}"
app:hintTextAppearance="@style/hint_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_cod_azienda"
android:id="@+id/input_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Codice azienda"
android:inputType="text"
app:binding="@{view.codAzienda}" />
android:hint="Username"
android:inputType="textEmailAddress"
app:binding="@{view.username}" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<!-- Password Label -->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:errorText="@{view.passwordError}"
app:hintTextAppearance="@style/hint_text"
app:passwordToggleEnabled="true">
</net.cachapa.expandablelayout.ExpandableLayout>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"
app:binding="@{view.password}" />
</com.google.android.material.textfield.TextInputLayout>
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/login_checkbox_custom_server"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="@{view.customSettingsCheckboxEnabled}"
android:text="@string/action_customize_server_settings"
app:checked="@{view.customSettingsCheckboxChecked}" />
<net.cachapa.expandablelayout.ExpandableLayout
android:id="@+id/login_layout_server_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="12dp"
app:el_duration="400"
app:el_expanded_bind="@{view.customSettingsCheckboxChecked}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--Host Label-->
<com.google.android.material.textfield.TextInputLayout
style="@style/TextInputLayout.OutlinePrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorText="@{view.codAziendaError}"
app:hintTextAppearance="@style/hint_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_cod_azienda"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Codice azienda"
android:inputType="text"
app:binding="@{view.codAzienda}" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
</net.cachapa.expandablelayout.ExpandableLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_login"
style="@style/Button.PrimaryFull"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp"
android:enabled="@{view.loginButtonEnabled}"
android:text="@string/login"
app:onClick="@{() -> view.login()}" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_login"
style="@style/Button.PrimaryFull"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp"
android:enabled="@{view.loginButtonEnabled}"
android:text="@string/login"
app:onClick="@{() -> view.login()}" />
</androidx.appcompat.widget.LinearLayoutCompat>
</ScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>
</ScrollView>
</layout>

View File

@@ -85,7 +85,7 @@
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:onClick="@{()->viewModel.settings()}"
android:src="@drawable/ic_settings_24dp"
android:tint="@color/colorPrimaryGray" />

View File

@@ -53,7 +53,7 @@
android:layout_height="50dp"
android:layout_gravity="end"
android:adjustViewBounds="true"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:onClick="@{()->viewModel.manualSearch()}"
android:src="@drawable/ic_search_black_24dp"
android:tint="@color/colorPrimaryGray" />

View File

@@ -61,7 +61,7 @@
android:layout_height="50dp"
android:layout_gravity="end"
android:adjustViewBounds="true"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:src="@drawable/ic_add_24dp"
android:tint="@color/colorPrimaryGray"
app:visibility="@{spedizioneView.addExtraItemsEnabled}"
@@ -73,7 +73,7 @@
android:layout_height="50dp"
android:layout_gravity="end"
android:adjustViewBounds="true"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
app:singleClick="@{() -> spedizioneView.startManualSearch()}"
android:src="@drawable/ic_black_barcode"
android:tint="@color/colorPrimaryGray"

View File

@@ -21,7 +21,7 @@
android:paddingEnd="12dp"
android:paddingBottom="12dp"
android:clickable="true"
android:background="@drawable/ripple_effect">
android:background="?attr/selectableItemBackground">
<LinearLayout
android:layout_width="match_parent"

View File

@@ -22,10 +22,11 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:orientation="horizontal"
app:visibility="@{view.isLargeLayout}">
<FrameLayout
android:id="@+id/order_list_fragment"
android:id="@+id/left_side_fragment_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
@@ -36,7 +37,7 @@
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/order_detail_fragment"
android:id="@+id/right_side_fragment_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
@@ -44,6 +45,15 @@
</androidx.appcompat.widget.LinearLayoutCompat>
<FrameLayout
android:id="@+id/full_width_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:reverse_visibility="@{view.isLargeLayout}"
tools:layout="@layout/fragment_prod_rientro_merce_order_list" />

View File

@@ -23,7 +23,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:paddingTop="12dp"
android:paddingEnd="12dp"
@@ -65,9 +65,9 @@
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="6dp"
android:paddingTop="2dp"
android:paddingTop="0dp"
android:paddingRight="6dp"
android:paddingBottom="2dp"
android:paddingBottom="0dp"
android:text="@{mtbColt.mtbColr.get(0).numCnf.intValue() + ` col`}"
android:textStyle="bold"
tools:text="45 col" />

View File

@@ -1,74 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_list"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/empty_view"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3">
tools:context=".gest.prod_rientro_merce.order_list.ProdRientroMerceOrderListFragment">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.4" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/filter_chips">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/main_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
tools:listitem="@layout/fragment_prod_rientro_merce_order_list__list_group_model" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.3">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:src="@drawable/ic_playlist_add_check_24dp"
android:adjustViewBounds="true"/>
<androidx.appcompat.widget.AppCompatTextView
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.4" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.15" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_empty_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.85" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="@string/no_orders_found_message"/>
</LinearLayout>
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@id/guideline_empty_right"
app:layout_constraintStart_toEndOf="@id/guideline_empty_left"
app:layout_constraintTop_toTopOf="@id/guideline_empty_top">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="72dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/ic_playlist_add_check_24dp" />
</FrameLayout>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/no_orders_found_message"
android:textColor="@android:color/black"
android:textSize="18sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</layout>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<layout>
<data>
@@ -16,110 +16,110 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:paddingStart="2dp"
android:paddingEnd="4dp">
android:paddingVertical="8dp"
android:paddingStart="4dp"
android:paddingEnd="12dp">
<RelativeLayout
android:id="@+id/ordine_lavorazione_main_list_group_item_container_root"
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ordine_state_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="8dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_play_circle_filled_24dp"
android:tint="@color/blue_700" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:background="@color/full_white"
android:gravity="center_vertical"
android:paddingStart="2dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp">
android:layout_toEndOf="@id/ordine_state_icon"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ordine_state_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="8dp"
android:background="@android:color/transparent"
android:src="@drawable/ic_play_circle_filled_24dp"
android:tint="@color/blue_700" />
<androidx.appcompat.widget.LinearLayoutCompat
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/ordine_state_icon"
android:orientation="vertical">
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/pre_first_row"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
tools:text="Cons 07 nov 2018" />
</RelativeLayout>
<RelativeLayout
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/pre_first_row"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
android:layout_alignParentEnd="true"
tools:text="Cons 07 nov 2018" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
android:textColor="#000"
tools:text="EUROGROUP ITALIA SRL" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/descrizione"
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/descrizione"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
tools:text="N° 39" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
android:textColor="#000"
tools:text="EUROGROUP ITALIA SRL" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/descrizione"
style="@style/AppTheme.NewMaterial.Text.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/descrizione"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
tools:text="N° 39" />
</RelativeLayout>
<RelativeLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_sub_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
tools:text="150KG" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sub_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_toStartOf="@id/right_sub_descrizione"
android:paddingEnd="6dp"
tools:text="Descr articolo estesa" />
</RelativeLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/right_sub_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
tools:text="Cod Jcom" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/order_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:layout_marginTop="4dp"
android:max="100"
android:progress="0" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/sub_descrizione"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/right_sub_descrizione"
android:paddingEnd="6dp"
tools:text="TextView" />
</RelativeLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</RelativeLayout>
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -79,8 +79,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_layout">
app:layout_constraintStart_toStartOf="parent">
<androidx.recyclerview.widget.RecyclerView
@@ -89,6 +88,7 @@
android:layout_height="0dp"
android:focusableInTouchMode="true"
android:orientation="vertical"
tools:listitem="@layout/layout_filter_agente__list_item"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="270dp"

View File

@@ -26,7 +26,7 @@
android:paddingEnd="12dp"
android:paddingBottom="12dp"
android:clickable="true"
android:background="@drawable/ripple_effect">
android:background="?attr/selectableItemBackground">
<LinearLayout
android:layout_width="match_parent"

View File

@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/ripple_effect"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="large_layout" type="bool">true</item>
</resources>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="large_layout" type="bool">false</item>
</resources>

View File

@@ -10,7 +10,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.3'
classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.10'

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip