refactor(sales): 优化售后退货处理逻辑

- 在处理售后退货时,增加根据场景类型进行过滤的条件
- 修改实退金额的计算方式,保留 4 位小数以暴露潜在问题
- 更新测试用例,启用 previously commented out 代码
This commit is contained in:
liuy 2025-03-17 11:43:22 +08:00
parent f90d6db61b
commit e0f49363db
4 changed files with 2766 additions and 5 deletions

View File

@ -1369,7 +1369,9 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
//查询OFS售后入库单对应的售后订单
List<RerturnGoodsOrderSearchData> rerturnGoodsOrderSearchData = queryBatchAfterSalesOrder(returnGoodHeaderDetailsDataDtoList1);
findAfterSalesOrder(rerturnGoodsOrderSearchData, returnGoodHeaderDetailsDataDtoList1);
returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1);
if ("tran".equals(sceneType)) {
returnGoodHeaderDetailsDataDtoList1 = filterForSale(returnGoodHeaderDetailsDataDtoList1);
}
//测试
// RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData2 = rerturnGoodsOrderSearchData.get(0);
// List<RerturnGoodsOrderSearchDetails> details2 = rerturnGoodsOrderSearchData2.getDetails();
@ -3001,7 +3003,7 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
}
//O含税单价=通过退货金额/请求数量
BigDecimal unitPriceIncludingTax = new BigDecimal(totalAmount).divide(new BigDecimal(requestQty), 20, BigDecimal.ROUND_HALF_UP);
//实退金额=O含税单价*O售后入库单实退数量
//实退金额=O含税单价*O售后入库单这里保留 4 位小数的用途是便于暴露问题给后续方法后续方法会变成 2 位小数0.0034
BigDecimal actualRefundAmount = unitPriceIncludingTax.multiply(new BigDecimal(receivedQty)).setScale(4, BigDecimal.ROUND_HALF_UP);
//出库对应的实退=含税单价(actualRefundAmount)*出库单实退数量
// BigDecimal actualRefundAmountBigDecimal = new BigDecimal(receivedQty).multiply(actualRefundAmount).setScale(2, BigDecimal.ROUND_HALF_UP);

View File

@ -28,11 +28,11 @@ public class PassiveWarehouseReceiptToCTest {
public void startImplementStockByTime() {
try {
//测试O无源件入库
// passiveWarehouseReceiptToC.startImplementStockByTime("2025-03-11 22:27:02", "2025-03-11 22:27:02");
passiveWarehouseReceiptToC.startImplementStockByTime("2025-03-11 22:27:02", "2025-03-11 22:27:02");
//测试O无源生成红字应收
// passiveWarehouseReceiptToC.startImplementByTradeTime("2025-03-11 22:27:02", "2025-03-11 22:27:02");
passiveWarehouseReceiptToC.startImplementByCode("1111", "stock");
// passiveWarehouseReceiptToC.startImplementByCode("1111", "stock");
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -37,7 +37,7 @@ public class SoSaleReturnPluginInitializerToCTest {
// soSaleReturnPluginInitializerToC.startImplement(null, null);
try {
String code = "LETS-RE2025022000001336";
soSaleReturnPluginInitializerToC.startImplementByCode(code, "stock");
soSaleReturnPluginInitializerToC.startImplementByCode(code, "tran");
} catch (Exception e) {
e.printStackTrace();
}