完善单据保存中增加更新成本价的逻辑

This commit is contained in:
jishenghua
2024-05-23 23:29:32 +08:00
parent 3727271fd0
commit 0292446e15
2 changed files with 28 additions and 10 deletions

View File

@@ -1065,16 +1065,33 @@ public class DepotItemService {
for(DepotItemVo4DetailByTypeAndMId item: itemList) {
//入库
if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(item.getType())) {
currentAllPrice = currentAllPrice.add(item.getAllPrice());
currentNumber = currentNumber.add(item.getBnum());
currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP);
//零售退货、销售退货
if(BusinessConstants.SUB_TYPE_RETAIL_RETURN.equals(item.getSubType())||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(item.getSubType())) {
//数量*当前的成本单价
currentNumber = currentNumber.add(item.getBnum());
BigDecimal inNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO;
currentAllPrice = currentAllPrice.add(inNum.multiply(currentUnitPrice));
} else {
//数量*单价 另外计算新的成本价
currentAllPrice = currentAllPrice.add(item.getAllPrice());
currentNumber = currentNumber.add(item.getBnum());
currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP);
}
}
//出库
if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(item.getType())) {
currentNumber = currentNumber.add(item.getBnum());
BigDecimal outNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO;
//出库的数量*当前的成本
currentAllPrice = currentAllPrice.add(outNum.multiply(currentUnitPrice));
//采购退货
if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(item.getSubType())) {
//数量*单价 另外计算新的成本价
currentAllPrice = currentAllPrice.add(item.getAllPrice());
currentNumber = currentNumber.add(item.getBnum());
currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP);
} else {
currentNumber = currentNumber.add(item.getBnum());
BigDecimal outNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO;
//数量*当前的成本单价
currentAllPrice = currentAllPrice.add(outNum.multiply(currentUnitPrice));
}
}
}
//更新实时库存中的当前单价