diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 480505b8..9be070a5 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -520,6 +520,8 @@ public class DepotItemService { depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioTwo())); //数量乘以比例 } else if (unit.equals(unitInfo.getOtherUnitThree())) { //如果等于副单位3 depotItem.setBasicNumber(oNumber.multiply(unitInfo.getRatioThree())); //数量乘以比例 + } else { + depotItem.setBasicNumber(oNumber); //数量一致 } } else { depotItem.setBasicNumber(oNumber); //其他情况 @@ -1063,18 +1065,18 @@ public class DepotItemService { BigDecimal currentUnitPrice = BigDecimal.ZERO; BigDecimal currentAllPrice = BigDecimal.ZERO; for(DepotItemVo4DetailByTypeAndMId item: itemList) { + BigDecimal basicNumber = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; //入库 if(BusinessConstants.DEPOTHEAD_TYPE_IN.equals(item.getType())) { //零售退货、销售退货 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)); + currentNumber = currentNumber.add(basicNumber); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); } else { //数量*单价 另外计算新的成本价 currentAllPrice = currentAllPrice.add(item.getAllPrice()); - currentNumber = currentNumber.add(item.getBnum()); + currentNumber = currentNumber.add(basicNumber); if(currentNumber.compareTo(BigDecimal.ZERO)!=0) { currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP); } @@ -1086,15 +1088,14 @@ public class DepotItemService { if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(item.getSubType())) { //数量*单价 另外计算新的成本价 currentAllPrice = currentAllPrice.add(item.getAllPrice()); - currentNumber = currentNumber.add(item.getBnum()); + currentNumber = currentNumber.add(basicNumber); if(currentNumber.compareTo(BigDecimal.ZERO)!=0) { currentUnitPrice = currentAllPrice.divide(currentNumber, 2, BigDecimal.ROUND_HALF_UP); } } else { - currentNumber = currentNumber.add(item.getBnum()); - BigDecimal outNum = item.getBnum()!=null?item.getBnum():BigDecimal.ZERO; + currentNumber = currentNumber.add(basicNumber); //数量*当前的成本单价 - currentAllPrice = currentAllPrice.add(outNum.multiply(currentUnitPrice)); + currentAllPrice = currentAllPrice.add(basicNumber.multiply(currentUnitPrice)); } } } diff --git a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml index fd163f88..06f8811e 100644 --- a/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml +++ b/jshERP-boot/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -151,11 +151,11 @@ (select dh.number,me.bar_code,m.name material_name,dh.type,dh.sub_type, case when type='入库' then ifnull(di.basic_number,0) - when type='出库' then 0-di.basic_number + when type='出库' then 0-ifnull(di.basic_number,0) when dh.sub_type='组装单' and di.material_type='组合件' then ifnull(di.basic_number,0) - when dh.sub_type='组装单' and di.material_type='普通子件' then 0-di.basic_number + when dh.sub_type='组装单' and di.material_type='普通子件' then 0-ifnull(di.basic_number,0) when dh.sub_type='拆卸单' and di.material_type='普通子件' then ifnull(di.basic_number,0) - when dh.sub_type='拆卸单' and di.material_type='组合件' then 0-di.basic_number + when dh.sub_type='拆卸单' and di.material_type='组合件' then 0-ifnull(di.basic_number,0) when dh.sub_type='盘点复盘' then ifnull(di.basic_number,0) else 0 end