ERP:基本完成销售入库模块

This commit is contained in:
YunaiV
2024-02-11 22:12:56 +08:00
parent 0694bc8684
commit dbc367ad95
4 changed files with 55 additions and 6 deletions

View File

@ -131,7 +131,7 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
if (saleOrder.getDiscountPercent() == null) {
saleOrder.setDiscountPercent(BigDecimal.ZERO);
}
saleOrder.setDiscountPrice(MoneyUtils.priceMultiply(saleOrder.getTotalPrice(), saleOrder.getDiscountPercent()));
saleOrder.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleOrder.getTotalPrice(), saleOrder.getDiscountPercent()));
saleOrder.setTotalPrice(saleOrder.getTotalPrice().subtract(saleOrder.getDiscountPrice()));
}
@ -191,8 +191,11 @@ public class ErpSaleOrderServiceImpl implements ErpSaleOrderService {
if (item.getTotalPrice() == null) {
return;
}
item.setTaxPrice(MoneyUtils.priceMultiply(item.getTotalPrice(), item.getTaxPercent()));
item.setTotalPrice(item.getTotalPrice().add(item.getTaxPrice()));
if (item.getTaxPercent() == null) {
item.setTaxPercent(BigDecimal.ZERO);
} else {
item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
}
}));
}

View File

@ -15,8 +15,11 @@ import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutItemMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.sale.ErpSaleOutMapper;
import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum;
import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService;
import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@ -60,6 +63,8 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
private ErpSaleOrderService saleOrderService;
@Resource
private ErpAccountService accountService;
@Resource
private ErpStockRecordService stockRecordService;
@Resource
private AdminUserApi adminUserApi;
@ -142,8 +147,11 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
if (saleOut.getDiscountPercent() == null) {
saleOut.setDiscountPercent(BigDecimal.ZERO);
}
saleOut.setDiscountPrice(MoneyUtils.priceMultiply(saleOut.getTotalPrice(), saleOut.getDiscountPercent()));
saleOut.setDiscountPrice(MoneyUtils.priceMultiplyPercent(saleOut.getTotalPrice(), saleOut.getDiscountPercent()));
saleOut.setTotalPrice(saleOut.getTotalPrice().subtract(saleOut.getDiscountPrice()));
// 计算应收金额
BigDecimal allPrice = saleOut.getTotalPrice().add(saleOut.getOtherPrice());
saleOut.setDebtPrice(allPrice.subtract(saleOut.getPayPrice()));
}
private void updateSaleOrderOutCount(Long orderId) {
@ -173,6 +181,17 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
if (updateCount == 0) {
throw exception(approve ? SALE_OUT_APPROVE_FAIL : SALE_OUT_PROCESS_FAIL);
}
// 3. 变更库存
List<ErpSaleOutItemDO> saleOutItems = saleOutItemMapper.selectListByOutId(id);
Integer bizType = approve ? ErpStockRecordBizTypeEnum.SALE_OUT.getType()
: ErpStockRecordBizTypeEnum.SALE_OUT_CANCEL.getType();
saleOutItems.forEach(saleOutItem -> {
BigDecimal count = approve ? saleOutItem.getCount().negate() : saleOutItem.getCount();
stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO(
saleOutItem.getProductId(), saleOutItem.getWarehouseId(), count,
bizType, saleOutItem.getOutId(), saleOutItem.getId(), saleOut.getNo()));
});
}
private List<ErpSaleOutItemDO> validateSaleOutItems(List<ErpSaleOutSaveReqVO.Item> list) {
@ -187,8 +206,11 @@ public class ErpSaleOutServiceImpl implements ErpSaleOutService {
if (item.getTotalPrice() == null) {
return;
}
item.setTaxPrice(MoneyUtils.priceMultiply(item.getTotalPrice(), item.getTaxPercent()));
item.setTotalPrice(item.getTotalPrice().add(item.getTaxPrice()));
if (item.getTaxPercent() == null) {
item.setTaxPercent(BigDecimal.ZERO);
} else {
item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
}
}));
}