Implementato criterio distribuzione in setup gest.
Implementata stampa di N colli una volta che essi vengono distribuiti.
This commit is contained in:
parent
0baee207ee
commit
0e503e3f23
@ -7,7 +7,7 @@ import it.integry.integrywmsnative.core.model.secondary.GestioneEnum;
|
|||||||
public class ReportManager {
|
public class ReportManager {
|
||||||
|
|
||||||
|
|
||||||
public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) throws Exception{
|
public static void getRightReportNameByMtbColt(MtbColt mtbColt, RunnableArgs<String> onComplete, RunnableArgs<Exception> onFailed) {
|
||||||
|
|
||||||
if(mtbColt != null){
|
if(mtbColt != null){
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ public class ReportManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("mtbColt cannot be NULL");
|
onFailed.run(new Exception("mtbColt cannot be NULL"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package it.integry.integrywmsnative.core.settings;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
|
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
|
||||||
|
import it.integry.integrywmsnative.core.REST.model.DistribuzioneColloDTO;
|
||||||
import it.integry.integrywmsnative.core.model.Azienda;
|
import it.integry.integrywmsnative.core.model.Azienda;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepo;
|
import it.integry.integrywmsnative.core.model.MtbDepo;
|
||||||
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
import it.integry.integrywmsnative.core.model.MtbDepoPosizione;
|
||||||
@ -19,6 +20,7 @@ public class DBSettingsModel {
|
|||||||
private boolean flagMultiClienteOrdV;
|
private boolean flagMultiClienteOrdV;
|
||||||
private String defaultCodAnag;
|
private String defaultCodAnag;
|
||||||
private String defaultCausaleRettificaGiacenze;
|
private String defaultCausaleRettificaGiacenze;
|
||||||
|
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
|
||||||
|
|
||||||
public List<String> getAvailableProfiles() {
|
public List<String> getAvailableProfiles() {
|
||||||
return availableProfiles;
|
return availableProfiles;
|
||||||
@ -88,4 +90,13 @@ public class DBSettingsModel {
|
|||||||
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
|
this.defaultCausaleRettificaGiacenze = defaultCausaleRettificaGiacenze;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DistribuzioneColloDTO.CriterioDistribuzione getDefaultCriterioDistribuzione() {
|
||||||
|
return defaultCriterioDistribuzione;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DBSettingsModel setDefaultCriterioDistribuzione(String defaultCriterioDistribuzione) {
|
||||||
|
this.defaultCriterioDistribuzione = DistribuzioneColloDTO.CriterioDistribuzione.fromString(defaultCriterioDistribuzione);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -184,7 +184,15 @@ public class SettingsManager {
|
|||||||
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
|
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "COD_ANAG_DEFAULT", valueCodAnagDefault -> {
|
||||||
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
|
dbSettingsModelIstance.setDefaultCodAnag(valueCodAnagDefault.value);
|
||||||
|
|
||||||
|
GestSetupRESTConsumer.getValue("PICKING", "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", valueDefaultCriterioDistribuzione -> {
|
||||||
|
dbSettingsModelIstance.setDefaultCriterioDistribuzione(valueDefaultCriterioDistribuzione.value);
|
||||||
|
|
||||||
if(onComplete != null) onComplete.run();
|
if(onComplete != null) onComplete.run();
|
||||||
|
|
||||||
|
}, ex -> {
|
||||||
|
if(onFailed != null) onFailed.run(ex);
|
||||||
|
});
|
||||||
|
|
||||||
}, ex -> {
|
}, ex -> {
|
||||||
if(onFailed != null) onFailed.run(ex);
|
if(onFailed != null) onFailed.run(ex);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -748,7 +748,7 @@ public class AccettazioneOnOrdineAccettazioneInevasoViewModel implements IOnColl
|
|||||||
dto.setShouldAskDataScad(true);
|
dto.setShouldAskDataScad(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value)).show();
|
DialogInputQuantity.makeBase(mActivity, dto, true, value -> onOrdineRowDispatched(item, value), null).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -117,7 +117,7 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
|||||||
MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID);
|
MtbColt recoveredMtbColt = ColliDataRecover.getSession(recoveredMtbColtID);
|
||||||
|
|
||||||
if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) {
|
if(recoveredMtbColt != null && recoveredMtbColt.getGestioneEnum() == GestioneEnum.VENDITA && !UtilityString.isNullOrEmpty(recoveredMtbColt.getFiltroOrdini())) {
|
||||||
ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE,
|
ColliMagazzinoRESTConsumer.distribuisciCollo(recoveredMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
|
||||||
mtbColts -> {
|
mtbColts -> {
|
||||||
ColliDataRecover.closeSession(recoveredMtbColtID);
|
ColliDataRecover.closeSession(recoveredMtbColtID);
|
||||||
endRecoverMode();
|
endRecoverMode();
|
||||||
|
|||||||
@ -393,7 +393,6 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
.setMaxQta(mtbColr.getQtaCol());
|
.setMaxQta(mtbColr.getQtaCol());
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
DialogInputQuantity.makeBase(mContext, dto, false, quantityDTO -> {
|
||||||
if(quantityDTO != null) {
|
|
||||||
mtbColr
|
mtbColr
|
||||||
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
.setQtaCol(new BigDecimal(quantityDTO.qtaTot.get()))
|
||||||
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
|
.setQtaCnf(new BigDecimal(quantityDTO.qtaCnf.get()))
|
||||||
@ -401,8 +400,7 @@ public class PickingLiberoViewModel implements IRecyclerItemClicked<MtbColr> {
|
|||||||
.setDatetimeRow(new Date());
|
.setDatetimeRow(new Date());
|
||||||
|
|
||||||
onComplete.run(mtbColr);
|
onComplete.run(mtbColr);
|
||||||
} else onAbort.run();
|
}, onAbort).show();
|
||||||
}).show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -301,7 +301,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
|
|
||||||
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
DialogInputQuantity.makeBase(mContext, qtaDto, true, (quantityDTO) -> {
|
||||||
onPostDispatch(mtbAart, quantityDTO);
|
onPostDispatch(mtbAart, quantityDTO);
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ public class RettificaGiacenzeViewModel implements IRecyclerItemClicked<MtbColr>
|
|||||||
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
UtilityExceptions.defaultException(mContext, ex, progressDialog);
|
||||||
});
|
});
|
||||||
|
|
||||||
}).show();
|
}, null).show();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import com.annimon.stream.Stream;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -707,7 +708,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
progress.show();
|
progress.show();
|
||||||
|
|
||||||
if(thereIsAnyRowInUL()) {
|
if(thereIsAnyRowInUL()) {
|
||||||
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress)));
|
updateDataFine(progress, () -> distribuisciCollo(progress, (generatedMtbColts) -> printCollo(progress, generatedMtbColts)));
|
||||||
} else {
|
} else {
|
||||||
ColliDataRecover.closeSession(mtbColtSessionID);
|
ColliDataRecover.closeSession(mtbColtSessionID);
|
||||||
deleteCollo(progress);
|
deleteCollo(progress);
|
||||||
@ -742,7 +743,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
MtbColt cloneMtbColt = (MtbColt) mArticoliInColloBottomSheetViewModel.mtbColt.get().clone();
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, DistribuzioneColloDTO.CriterioDistribuzione.UPDATE,
|
ColliMagazzinoRESTConsumer.distribuisciCollo(cloneMtbColt, SettingsManager.iDB().getDefaultCriterioDistribuzione(),
|
||||||
mtbColts -> {
|
mtbColts -> {
|
||||||
ColliDataRecover.closeSession(mtbColtSessionID);
|
ColliDataRecover.closeSession(mtbColtSessionID);
|
||||||
onComplete.run(mtbColts);
|
onComplete.run(mtbColts);
|
||||||
@ -750,7 +751,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
|
ex -> UtilityExceptions.defaultException(mActivity, ex, progress));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printCollo(ProgressDialog progress) {
|
private void printCollo(ProgressDialog progress, List<MtbColt> mtbColtsToPrint) {
|
||||||
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
|
DialogAskShouldPrint.make(mActivity, "Packing List", shouldPrint -> {
|
||||||
|
|
||||||
if(shouldPrint) {
|
if(shouldPrint) {
|
||||||
@ -760,20 +761,10 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
if (value.size() > 0) {
|
if (value.size() > 0) {
|
||||||
try {
|
try {
|
||||||
MtbColt currentMtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
cyclicPrint(mtbColtsToPrint.iterator(), value.get(0), () -> {
|
||||||
|
postCloseOperations(mtbColtsToPrint);
|
||||||
ReportManager.getRightReportNameByMtbColt(currentMtbColt, reportName -> {
|
|
||||||
|
|
||||||
PrinterRESTConsumer.printCollo(
|
|
||||||
value.get(0),
|
|
||||||
currentMtbColt,
|
|
||||||
1, reportName, () -> {
|
|
||||||
|
|
||||||
postCloseOperations();
|
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
|
|
||||||
}, ex -> {
|
}, ex -> {
|
||||||
|
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
String errorMessage = ex.getMessage();
|
String errorMessage = ex.getMessage();
|
||||||
DialogSimpleMessageHelper.makeErrorDialog(
|
DialogSimpleMessageHelper.makeErrorDialog(
|
||||||
@ -782,19 +773,17 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
R.string.button_ignore_print,
|
R.string.button_ignore_print,
|
||||||
() -> postCloseOperations()).show();
|
() -> postCloseOperations(mtbColtsToPrint)).show();
|
||||||
});
|
});
|
||||||
|
|
||||||
}, ex -> UtilityExceptions.defaultException(mActivity, ex, progress)
|
|
||||||
);
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
UtilityExceptions.defaultException(mActivity, ex, progress);
|
UtilityExceptions.defaultException(mActivity, ex, progress);
|
||||||
postCloseOperations();
|
postCloseOperations(mtbColtsToPrint);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
String errorMessage = "Nessuna stampante configurata";
|
String errorMessage = "Nessuna stampante configurata";
|
||||||
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations()).show();
|
DialogSimpleMessageHelper.makeWarningDialog(mActivity, new SpannableString(errorMessage), null, () -> postCloseOperations(mtbColtsToPrint)).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,12 +793,36 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
postCloseOperations();
|
postCloseOperations(mtbColtsToPrint);
|
||||||
progress.dismiss();
|
progress.dismiss();
|
||||||
}
|
}
|
||||||
}).show();
|
}).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void cyclicPrint(Iterator<MtbColt> sourceMtbColts, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
|
if(sourceMtbColts.hasNext()){
|
||||||
|
singlePrint(sourceMtbColts.next(), printerName, () -> {
|
||||||
|
cyclicPrint(sourceMtbColts, printerName, onComplete, onAbort);
|
||||||
|
}, onAbort);
|
||||||
|
} else {
|
||||||
|
onComplete.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void singlePrint(MtbColt mtbColtToPrint, String printerName, Runnable onComplete, RunnableArgs<Exception> onAbort) {
|
||||||
|
ReportManager.getRightReportNameByMtbColt(mtbColtToPrint, reportName -> {
|
||||||
|
|
||||||
|
PrinterRESTConsumer.printCollo(
|
||||||
|
printerName,
|
||||||
|
mtbColtToPrint,
|
||||||
|
1,
|
||||||
|
reportName, onComplete, onAbort);
|
||||||
|
|
||||||
|
}, onAbort);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void deleteCollo(ProgressDialog progress) {
|
private void deleteCollo(ProgressDialog progress) {
|
||||||
|
|
||||||
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
|
ColliMagazzinoRESTConsumer.deleteCollo(mArticoliInColloBottomSheetViewModel.mtbColt.get(), () -> {
|
||||||
@ -833,11 +846,11 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void postCloseOperations() {
|
private void postCloseOperations(List<MtbColt> generatedMtbColt) {
|
||||||
|
|
||||||
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
MtbColt mtbColt = mArticoliInColloBottomSheetViewModel.mtbColt.get();
|
||||||
|
|
||||||
this.mColliRegistrati.add(mtbColt);
|
this.mColliRegistrati.addAll(generatedMtbColt);
|
||||||
|
|
||||||
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
mArticoliInColloBottomSheetViewModel.mtbColt.set(null);
|
||||||
isFabVisible.set(true);
|
isFabVisible.set(true);
|
||||||
@ -965,7 +978,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value)).show();
|
DialogInputQuantity.makeBase(mActivity, dto, false, value -> onOrdineRowDispatched(item, value), null).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -333,7 +333,7 @@ public class VersamentoMerceViewModel {
|
|||||||
.setDatetimeRow(new Date());
|
.setDatetimeRow(new Date());
|
||||||
|
|
||||||
onComplete.run(mtbColr);
|
onComplete.run(mtbColr);
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -188,7 +188,7 @@ public class ArticoliInColloBottomSheetViewModel {
|
|||||||
},
|
},
|
||||||
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
ex -> UtilityExceptions.defaultException(mContext, ex, progress));
|
||||||
|
|
||||||
}).show();
|
}, null).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onItemDelete(int position) {
|
private void onItemDelete(int position) {
|
||||||
|
|||||||
@ -214,11 +214,11 @@ public class DialogInputQuantity {
|
|||||||
private QuantityDTO currentQuantityDto;
|
private QuantityDTO currentQuantityDto;
|
||||||
private DTO currentDTO;
|
private DTO currentDTO;
|
||||||
|
|
||||||
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
public static AlertDialog makeBase(final Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
|
||||||
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback).currentAlert;
|
return new DialogInputQuantity(context, dto, canOverflowQuantity, dialogCallback, onAbort).currentAlert;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback) {
|
public DialogInputQuantity(Context context, final DTO dto, boolean canOverflowQuantity, final ISingleValueOperationCallback<QuantityDTO> dialogCallback, final Runnable onAbort) {
|
||||||
currentContext = context;
|
currentContext = context;
|
||||||
currentMtbAart = dto.getMtbAart();
|
currentMtbAart = dto.getMtbAart();
|
||||||
currentDTO = dto;
|
currentDTO = dto;
|
||||||
@ -253,7 +253,7 @@ public class DialogInputQuantity {
|
|||||||
.setView(currentBinding.getRoot())
|
.setView(currentBinding.getRoot())
|
||||||
.setPositiveButton(context.getText(R.string.confirm), null)
|
.setPositiveButton(context.getText(R.string.confirm), null)
|
||||||
.setNegativeButton(context.getText(R.string.abort), (dialog, which) -> {
|
.setNegativeButton(context.getText(R.string.abort), (dialog, which) -> {
|
||||||
dialogCallback.onResult(null);
|
if(onAbort != null) onAbort.run();
|
||||||
});
|
});
|
||||||
|
|
||||||
currentAlert = alertDialog.create();
|
currentAlert = alertDialog.create();
|
||||||
|
|||||||
@ -27,7 +27,8 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:padding="16dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -39,11 +40,12 @@
|
|||||||
android:id="@+id/print_message"
|
android:id="@+id/print_message"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_margin="16dp"
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
style="@style/TextInputLayout.OutlinePrimary"
|
style="@style/TextInputLayout.OutlinePrimary"
|
||||||
android:textColor="#5F6368"
|
android:textColor="#5F6368"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
tools:text="La procedura stamperà una packing list"/>
|
tools:text="La procedura stamperà una packing list"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@ -24,7 +24,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
app:layout_constraintEnd_toStartOf="@+id/qta_box"
|
||||||
app:layout_constraintStart_toStartOf="parent">
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user