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

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
@@ -113,31 +113,23 @@ class SelfProcurementViewModel @Inject constructor(
val finalPrice =
if (count == 0.0) {
0.0
} else if (!_countUserInput.value && !_priceUserInput.value) {
if (info.goodsPriceTemp.isNotEmpty()) {
info.goodsPrice.div(count).toSafeDouble()
} else {
0.0
}
} else info.goodsUnitPrice
} else if (_amountUserInput.value && !_priceUserInput.value) {
info.goodsPrice.div(count).toSafeDouble()
} else 0.0
// 计算金额 单价不为空,不是数量输入 也不是金额输入
val finalAmount =
if (count == 0.0) {
0.0
} else if (!_countUserInput.value && !_amountUserInput.value) {
if (info.goodsUnitPriceTemp.isNotEmpty()) {
count.times(info.goodsUnitPrice).toSafeDouble()
} else {
0.0
}
} else info.goodsPrice
} else if (_priceUserInput.value && !_amountUserInput.value) {
count.times(info.goodsUnitPrice).toSafeDouble()
} else 0.0
Timber.d("startSensorScale finalPrice = $finalPrice, finalAmount = $finalAmount ")
_selectedItem.value = info.copy(
goodsWeight = weight.toSafeBigDecimal(),
// 数量
goodsCountTemp = if (_countUserInput.value) info.goodsCountTemp else finalCount.toFormattedString(),
goodsCount = if (_countUserInput.value) info.goodsCount else finalCount,
goodsCountTemp = finalCount.toFormattedString(),
goodsCount = finalCount,
// 单价
goodsUnitPrice = if (_priceUserInput.value) info.goodsUnitPrice else finalPrice,
goodsUnitPriceTemp = if (_priceUserInput.value) info.goodsUnitPriceTemp else finalPrice.toFormattedString(),
@@ -160,25 +152,28 @@ class SelfProcurementViewModel @Inject constructor(
fun updateSelectedItem(purchaseOrder: PurchaseWarehouseParam?) {
if (purchaseOrder != null) {
purchaseOrder.goodsCount.takeIf { it != 0.0 }?.let { receivedNum ->
// 计算金额 单价不为空,并且金额没有手动输入
// if (purchaseOrder.goodsUnitPrice == 0.0 && !_amountUserInput.value) {
if (!_amountUserInput.value) {
if (purchaseOrder.goodsCount != 0.0) {
if (purchaseOrder.goodsUnitPriceTemp.isNotEmpty()) { // 计算金额 单价不为空,并且金额没有手动输入
Timber.d("updateSelectedItem 计算金额")
val result =
receivedNum.times(purchaseOrder.goodsUnitPrice)
purchaseOrder.goodsCount.times(purchaseOrder.goodsUnitPrice)
purchaseOrder.goodsPrice = result.toSafeDouble()
purchaseOrder.goodsPriceTemp = result.toFormattedString()
}
// 计算单价 金额不为空,并且单价没有手动输入
// if (purchaseOrder.goodsPrice == 0.0 && !_priceUserInput.value) {
if (!_priceUserInput.value) {
} else if (purchaseOrder.goodsPriceTemp.isNotEmpty()) { // 计算单价 金额不为空,并且单价没有手动输入
Timber.d("updateSelectedItem 计算单价")
val result =
purchaseOrder.goodsPrice.div(receivedNum)
purchaseOrder.goodsPrice.div(purchaseOrder.goodsCount)
purchaseOrder.goodsUnitPrice = result.toSafeDouble()
purchaseOrder.goodsUnitPriceTemp = result.toFormattedString()
}
} else {
if (_priceUserInput.value) {
purchaseOrder.goodsPrice = 0.0
purchaseOrder.goodsPriceTemp = ""
} else if (_amountUserInput.value) {
purchaseOrder.goodsUnitPrice = 0.0
purchaseOrder.goodsUnitPriceTemp = ""
}
}
} else {
// 重置输入状态