处理数量、单价、金额之间的计算

This commit is contained in:
zxj
2025-07-11 09:46:08 +08:00
parent 32bc730a21
commit f92ae70423
10 changed files with 98 additions and 79 deletions
@@ -540,7 +540,8 @@ private fun ReceiptProductEditView(
label = "收货数量",
value = selectedItem!!.receivedNumTemp,
onValueChange = { value ->
viewModel.updateCountInputState(value.isNotEmpty())
viewModel.updateCountInputState(true)
selectedItem?.let {
viewModel.updateSelectedItem(
selectedItem!!.copy(
@@ -557,14 +558,17 @@ private fun ReceiptProductEditView(
RowInputLayout(
label = "收货单价",
value = selectedItem!!.recUnitPriceTaxInTemp ?: "",
value = selectedItem!!.recUnitPriceTaxInTemp,
trailingLabel = "",
isInitUpdate = true,
onValueChange = { value ->
viewModel.updatePriceInputState(value.isNotEmpty())
viewModel.updatePriceInputState(true)
viewModel.updateAmountInputState(false)
selectedItem?.let {
viewModel.updateSelectedItem(
selectedItem!!.copy(
recPriceExItemTemp = "",
recPriceExItem = 0f,
recUnitPriceTaxInTemp = value,
recUnitPriceTaxIn = value.toSafeFloat()
)
@@ -574,14 +578,18 @@ private fun ReceiptProductEditView(
)
RowInputLayout(
label = "收货金额",
value = selectedItem!!.recPriceExItemTemp ?: "",
value = selectedItem!!.recPriceExItemTemp,
trailingLabel = "",
isInitUpdate = true,
onValueChange = { value ->
viewModel.updateAmountInputState(value.isNotEmpty())
viewModel.updateAmountInputState(true)
viewModel.updatePriceInputState(false)
selectedItem?.let {
viewModel.updateSelectedItem(
selectedItem!!.copy(
recUnitPriceTaxInTemp = "",
recUnitPriceTaxIn = 0f,
recPriceExItemTemp = value,
recPriceExItem = value.toSafeFloat()
)
@@ -656,7 +656,7 @@ private fun SelfProductEditView(
isInitUpdate = true,
onValueChange = { value ->
Timber.d("采购数量 onValueChange value = $value")
viewModel.updateCountInputState(value.isNotEmpty())
viewModel.updateCountInputState(true)
selectedItem.let {
viewModel.updateSelectedItem(
selectedItem!!.copy(
@@ -676,11 +676,14 @@ private fun SelfProductEditView(
trailingLabel = "",
isInitUpdate = true,
onValueChange = { value ->
viewModel.updatePriceInputState(value.isNotEmpty())
viewModel.updatePriceInputState(true)
viewModel.updateAmountInputState(false)
selectedItem.let {
Timber.d("goodsUnitPrice 更新 = $value")
viewModel.updateSelectedItem(
selectedItem!!.copy(
goodsPrice = 0.0,
goodsPriceTemp = "",
goodsUnitPriceTemp = value,
goodsUnitPrice = value.toSafeDouble()
)
@@ -694,10 +697,13 @@ private fun SelfProductEditView(
trailingLabel = "",
isInitUpdate = true,
onValueChange = { value ->
viewModel.updateAmountInputState(value.isNotEmpty())
viewModel.updateAmountInputState(true)
viewModel.updatePriceInputState(false)
selectedItem.let {
viewModel.updateSelectedItem(
selectedItem!!.copy(
goodsUnitPrice = 0.0,
goodsUnitPriceTemp = "",
goodsPriceTemp = value,
goodsPrice = value.toSafeDouble()
)
@@ -108,9 +108,7 @@ fun CustomTextField(
onClick: () -> Unit = {}, // 点击
) {
val containerColor = if (enabled) Color.Transparent else Gray_DCDCF0
// var inputValue by remember { mutableStateOf(value) }
var isUserInput by remember { mutableStateOf(false) }
var inputValue by remember(if (isInitUpdate && !isUserInput) value else null) {
var inputValue by remember(if (isInitUpdate) value else null) {
mutableStateOf(value)
}
val focusManager = LocalFocusManager.current
@@ -134,7 +132,6 @@ fun CustomTextField(
textStyle = newTextStyle,
onValueChange = { newValue ->
Timber.d("onValueChange newValue = $newValue")
isUserInput = newValue.isNotEmpty()
when (inputType) {
InputType.Number -> {
if (newValue.isEmpty() || newValue.isValidNumber()) {
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
@@ -47,7 +48,9 @@ fun ReceiptUnadjustedListView(
Row(
modifier = Modifier
.fillMaxWidth()
.padding(30.dp)
.padding(horizontal = 60.dp)
.height(84.dp),
verticalAlignment = Alignment.CenterVertically
) {
CustomSingleRightText(
modifier = Modifier.weight(1f),
@@ -89,7 +92,8 @@ fun ReceiptUnadjustedListView(
Row(
modifier = Modifier
.background(color = checkedBg)
.padding(30.dp)
.height(80.dp)
.padding(horizontal = 60.dp)
.clickable {
onItemCheckedClick(it)
}, verticalAlignment = Alignment.CenterVertically