test(sales): 更新 O 销售出库单逻辑和测试数据

- 修改 OverallConstant 中的 u8c_url 地址
- 更新 SoSaleOutPluginInitializerToC 中的优惠金额计算逻辑
- 调整 OfsOrderSalePostageFeeAllocationUtil 中的运费分配逻辑
- 修改测试类 SoSaleOutPluginInitializerToCTest 中的测试用例
This commit is contained in:
liuy 2024-12-04 13:44:31 +08:00
parent 4e474ac940
commit 7b238a8d75
4 changed files with 33 additions and 10 deletions

View File

@ -145,7 +145,7 @@ public class OverallConstant {
prodOverAll.put("u8c自定义项档案-单据红字标识-N名称", "N"); prodOverAll.put("u8c自定义项档案-单据红字标识-N名称", "N");
//中台地址 //中台地址
prodOverAll.put("u8c_url", "http://127.0.0.1:8081/kangarooDataCenterV3/entranceController/externalCallInterface"); prodOverAll.put("u8c_url", "http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface");
//测试 //测试
// prodOverAll.put("u8c_url", "http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface"); // prodOverAll.put("u8c_url", "http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface");

View File

@ -961,7 +961,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity); // BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity); // BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
String tax = new BigDecimal(bdTaxitemsEntity1.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString(); // String tax = new BigDecimal(bdTaxitemsEntity1.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
// BigDecimal noriginalcurprice = null;//无税单价 // BigDecimal noriginalcurprice = null;//无税单价
// BigDecimal noriginalcurmny = null;//无税金额 // BigDecimal noriginalcurmny = null;//无税金额
@ -1272,6 +1272,20 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
//查询对应的OFS销售订单 //查询对应的OFS销售订单
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryOfsOrder(headerDetailsDtoList); List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryOfsOrder(headerDetailsDtoList);
findMatchingOfsOrder(headerDetailsDtos, headerDetailsDtoList); findMatchingOfsOrder(headerDetailsDtos, headerDetailsDtoList);
//TODO 测试
for (int i = 0; i < headerDetailsDtos.size(); i++) {
com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto = headerDetailsDtos.get(i);
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto> details = headerDetailsDto.getDetails();
for (int j = 0; j < details.size(); j++) {
com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto detailsDto = details.get(j);
detailsDto.setPlatformDiscounts("1");
detailsDto.setPayDiscounts("1");
detailsDto.setExpertDiscounts("1");
detailsDto.setMerchantDiscounts("1");
}
}
//计算OFS销售订单优惠金额分摊到明细行 //计算OFS销售订单优惠金额分摊到明细行
// ofsOrderSaleAmountAllocationUtil.batchTocSalesAmountAllocation(headerDetailsDtos); // ofsOrderSaleAmountAllocationUtil.batchTocSalesAmountAllocation(headerDetailsDtos);
//计算OFS销售订单邮费分摊 //计算OFS销售订单邮费分摊
@ -1770,15 +1784,15 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
totalPayAmount = getRefsaleprice(bdInvmandocEntity, bdInvbasdocEntity, calculationFormulaStr, sonDetailsDto, header); totalPayAmount = getRefsaleprice(bdInvmandocEntity, bdInvbasdocEntity, calculationFormulaStr, sonDetailsDto, header);
} else { } else {
//O实付 //O实付
calculationFormulaStr.append("取O应收金额:"); calculationFormulaStr.append("取O实付金额:");
//触发取实付金额的逻辑因此需要累加O实付金额+O达人优惠+O支付优惠+O平台优惠 //触发取实付金额的逻辑因此需要累加O实付金额+O达人优惠+O支付优惠+O平台优惠
//取O实付金额 //取O实付金额
// totalPayAmount = sonDetailsDto.getTotalPayAmount(); // totalPayAmount = sonDetailsDto.getTotalPayAmount();
// totalPayAmount = accumulatedDiscounts(sonDetailsDto, headerDetailsDto, targetDetails); // totalPayAmount = accumulatedDiscounts(sonDetailsDto, headerDetailsDto, targetDetails);
//和万万确认O销售出库单明细行应收金额=O销售订单明细行应收金额/O销售订单明细行请求数量*O销售出库单明细行实发数量 //和万万确认O销售出库单明细行应收金额=O销售订单明细行应收金额/O销售订单明细行请求数量*O销售出库单明细行实发数量
//这里做好必要的参数验证抛出异常 //这里做好必要的参数验证抛出异常
Assert.notNull(targetDetails.getPayableAmount(), "O应收金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId()); Assert.notNull(targetDetails.getTotalPayAmount(), "O实付金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
Assert.state(!"".equals(targetDetails.getPayableAmount()), "O应收金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId()); Assert.state(!"".equals(targetDetails.getTotalPayAmount()), "O实付金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
Assert.notNull(targetDetails.getRequestQty(), "O请求数量不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId()); Assert.notNull(targetDetails.getRequestQty(), "O请求数量不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
Assert.state(!"".equals(targetDetails.getRequestQty()), "O请求数量不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId()); Assert.state(!"".equals(targetDetails.getRequestQty()), "O请求数量不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
@ -1786,16 +1800,16 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
Assert.notNull(sonDetailsDto.getShipQty(), "O实发数量不能为空 O销售出库单编码{} O明细行主键{}", header.getCode(), sonDetailsDto.getId()); Assert.notNull(sonDetailsDto.getShipQty(), "O实发数量不能为空 O销售出库单编码{} O明细行主键{}", header.getCode(), sonDetailsDto.getId());
Assert.state(!"".equals(sonDetailsDto.getShipQty()), "O实发数量不能为空 O销售出库单编码{} O明细行主键{}", header.getCode(), sonDetailsDto.getId()); Assert.state(!"".equals(sonDetailsDto.getShipQty()), "O实发数量不能为空 O销售出库单编码{} O明细行主键{}", header.getCode(), sonDetailsDto.getId());
BigDecimal detailedLineUnitPrice = new BigDecimal(targetDetails.getPayableAmount()).divide(new BigDecimal(targetDetails.getRequestQty()), 20, BigDecimal.ROUND_HALF_UP); BigDecimal detailedLineUnitPrice = new BigDecimal(targetDetails.getTotalPayAmount()).divide(new BigDecimal(targetDetails.getRequestQty()), 20, BigDecimal.ROUND_HALF_UP);
BigDecimal totalPayAmountBigDecimal = detailedLineUnitPrice.multiply(new BigDecimal(sonDetailsDto.getShipQty())).setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal totalPayAmountBigDecimal = detailedLineUnitPrice.multiply(new BigDecimal(sonDetailsDto.getShipQty())).setScale(2, BigDecimal.ROUND_HALF_UP);
totalPayAmount = totalPayAmountBigDecimal.stripTrailingZeros().toPlainString(); totalPayAmount = totalPayAmountBigDecimal.stripTrailingZeros().toPlainString();
// aaa.append(totalPayAmount); // aaa.append(totalPayAmount);
// aaa.append(","); // aaa.append(",");
String format = StrUtil.format("{}/{}*{}", targetDetails.getPayableAmount(), targetDetails.getRequestQty(), sonDetailsDto.getShipQty()); String format = StrUtil.format("{}/{}*{}", targetDetails.getTotalPayAmount(), targetDetails.getRequestQty(), sonDetailsDto.getShipQty());
calculationFormulaStr.append(format); calculationFormulaStr.append(format);
} }
Assert.notNull(totalPayAmount, "应收金额不能为空(应收金额=实付金额+达人优惠+支付优惠+平台优惠) 销售出库单编码:{} 出库单明细主键:{}", header.getCode(), sonDetailsDto.getId()); Assert.notNull(totalPayAmount, "实付金额不能为空 销售出库单编码:{} 出库单明细主键:{}", header.getCode(), sonDetailsDto.getId());
// String totalPayAmount = getFloorPrice(isCheckShopChoose, bdInvmandocEntity, header, sonDetailsDto, mapList, calculationFormulaStr); // String totalPayAmount = getFloorPrice(isCheckShopChoose, bdInvmandocEntity, header, sonDetailsDto, mapList, calculationFormulaStr);
// if (totalPayAmount == null) { // if (totalPayAmount == null) {
@ -3626,6 +3640,9 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
if (bdTaxitemsEntityList.size() == 0) { if (bdTaxitemsEntityList.size() == 0) {
Assert.state(false, "根据存货编码{}没有查询到U8C税目档案", invcode); Assert.state(false, "根据存货编码{}没有查询到U8C税目档案", invcode);
} }
if (bdTaxitemsEntityList.size() != 4) {
Assert.state(false, "根据存货编码{}没有查询到足够的U8C税目档案", invcode);
}
return bdTaxitemsEntityList.stream().collect(Collectors.toMap(BdTaxitemsEntity::getInvcode, entity -> entity)); return bdTaxitemsEntityList.stream().collect(Collectors.toMap(BdTaxitemsEntity::getInvcode, entity -> entity));
} }
@ -3845,6 +3862,9 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
saleorderRequestChildrenDto1.setVdef6("0"); saleorderRequestChildrenDto1.setVdef6("0");
saleorderRequestChildrenDto1.setVdef7("0"); saleorderRequestChildrenDto1.setVdef7("0");
//是否赠品
saleorderRequestChildrenDto1.setBlargessflag(false);
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto1); saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto1);
} }
} }

View File

@ -73,6 +73,9 @@ public class OfsOrderSalePostageFeeAllocationUtil {
//销售订单运费 //销售订单运费
String postageAmount = header.getPostageAmount(); String postageAmount = header.getPostageAmount();
// TODO 测试
postageAmount = "10";
//运费可能没有也有可能为0 //运费可能没有也有可能为0
BigDecimal postageAmountDiscounts = null; BigDecimal postageAmountDiscounts = null;
if (postageAmount != null && !"".equals(postageAmount) && !"0".equals(new BigDecimal(postageAmount).stripTrailingZeros().toPlainString())) { if (postageAmount != null && !"".equals(postageAmount) && !"0".equals(new BigDecimal(postageAmount).stripTrailingZeros().toPlainString())) {

View File

@ -112,7 +112,7 @@ class SoSaleOutPluginInitializerToCTest {
// String aaa = "LETS-SH2024102800021196"; // String aaa = "LETS-SH2024102800021196";
// soSaleOutPluginInitializerToC.startImplementTranByTime("2024-11-23 11:24:33", "2024-11-23 11:24:33"); // soSaleOutPluginInitializerToC.startImplementTranByTime("2024-11-23 11:24:33", "2024-11-23 11:24:33");
soSaleOutPluginInitializerToC.startImplementStockByTime("2024-11-15 00:00:00", "2024-11-15 23:59:59"); // soSaleOutPluginInitializerToC.startImplementStockByTime("2024-11-15 00:00:00", "2024-11-15 23:59:59");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -120,7 +120,7 @@ class SoSaleOutPluginInitializerToCTest {
// soSaleOutPluginInitializerToC.sendU8CTOCOrder("123446"); // soSaleOutPluginInitializerToC.sendU8CTOCOrder("123446");
try { try {
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024110100000024", "tran"); soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024120300016549", "stock");
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024110500013375", "tran"); // soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024110500013375", "tran");
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024111700013756", "tran"); // soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024111700013756", "tran");