| @@ -695,7 +695,7 @@ val sufficientStockQty = bomMaterials | |||||
| // ✅ 获取 req UOM - 对于 reqQty,使用 bomMaterial.uom(BOM 的 UOM) | // ✅ 获取 req UOM - 对于 reqQty,使用 bomMaterial.uom(BOM 的 UOM) | ||||
| // ✅ 对于 stockReqQty,使用 line.uom(库存单位,已按比例调整) | // ✅ 对于 stockReqQty,使用 line.uom(库存单位,已按比例调整) | ||||
| val reqUomId = bomMaterial?.uom?.id ?: line.uom?.id ?: 0L // BOM 的 UOM | val reqUomId = bomMaterial?.uom?.id ?: line.uom?.id ?: 0L // BOM 的 UOM | ||||
| val stockReqUomId = line.uom?.id ?: bomMaterial?.salesUnit?.id ?: 0L // 库存单位 UOM | |||||
| val stockReqUomId = line.uom?.id ?: bomMaterial?.stockUnit?.toLong() ?: 0L // 库存单位 UOM | |||||
| val reqUom = reqUomId.takeIf { it > 0 }?.let { uomConversionRepository.findByIdAndDeletedFalse(it) } | val reqUom = reqUomId.takeIf { it > 0 }?.let { uomConversionRepository.findByIdAndDeletedFalse(it) } | ||||
| val uomName = reqUom?.udfudesc | val uomName = reqUom?.udfudesc | ||||
| @@ -709,7 +709,7 @@ val sufficientStockQty = bomMaterials | |||||
| println("=== Quantity Calculation for Item: ${line.item?.code} (id=$itemId) ===") | println("=== Quantity Calculation for Item: ${line.item?.code} (id=$itemId) ===") | ||||
| println("JobOrderBomMaterial reqQty (adjusted, stock unit): $actualReqQty in UOM: ${stockReqUom?.udfudesc} (id=$stockReqUomId)") | println("JobOrderBomMaterial reqQty (adjusted, stock unit): $actualReqQty in UOM: ${stockReqUom?.udfudesc} (id=$stockReqUomId)") | ||||
| println("BomMaterial qty (base): ${bomMaterial?.qty}, saleQty (base): ${bomMaterial?.saleQty}") | |||||
| println("BomMaterial qty (base): ${bomMaterial?.qty}, stockQty (base): ${bomMaterial?.stockQty}") | |||||
| println("Original stockQty: $stockQtyValue in UOM: $stockUomNameForStock (id=$stockUomId)") | println("Original stockQty: $stockQtyValue in UOM: $stockUomNameForStock (id=$stockUomId)") | ||||
| val jobOrder = jobOrderRepository.findById(joid).orElse(null) | val jobOrder = jobOrderRepository.findById(joid).orElse(null) | ||||
| @@ -724,8 +724,8 @@ val sufficientStockQty = bomMaterials | |||||
| // ✅ reqQty 使用 bomMaterial.qty * proportion(BOM 单位) | // ✅ reqQty 使用 bomMaterial.qty * proportion(BOM 单位) | ||||
| val reqQtyInBomUnit = (bomMaterial?.qty?.times(proportion) ?: BigDecimal.ZERO) | val reqQtyInBomUnit = (bomMaterial?.qty?.times(proportion) ?: BigDecimal.ZERO) | ||||
| // ✅ stockReqQty 使用 bomMaterial.saleQty * proportion(库存单位,已按比例调整) | |||||
| val stockReqQtyInStockUnit = (bomMaterial?.saleQty?.times(proportion) ?: BigDecimal.ZERO) | |||||
| // ✅ stockReqQty 使用 bomMaterial.stockQty * proportion(库存单位,已按比例调整) | |||||
| val stockReqQtyInStockUnit = (bomMaterial?.stockQty?.times(proportion) ?: BigDecimal.ZERO) | |||||
| // ✅ Convert reqQty (BOM unit) to base unit | // ✅ Convert reqQty (BOM unit) to base unit | ||||
| val baseReqQtyResult = if (reqUomId > 0 && reqQtyInBomUnit > BigDecimal.ZERO) { | val baseReqQtyResult = if (reqUomId > 0 && reqQtyInBomUnit > BigDecimal.ZERO) { | ||||
| @@ -851,7 +851,7 @@ val sufficientStockQty = bomMaterials | |||||
| baseReqQty = baseReqQty, | baseReqQty = baseReqQty, | ||||
| stockQty = stockQty, | stockQty = stockQty, | ||||
| // ✅ stockReqQty:使用 bomMaterial.saleQty * proportion(库存单位,已按比例调整) | |||||
| // ✅ stockReqQty:使用 bomMaterial.stockQty * proportion(库存单位,已按比例调整) | |||||
| stockReqQty = if (stockReqUomId in decimalUomIds) { | stockReqQty = if (stockReqUomId in decimalUomIds) { | ||||
| stockReqQtyInStockUnit.toDouble() | stockReqQtyInStockUnit.toDouble() | ||||
| } else { | } else { | ||||