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_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");

View File

@ -961,7 +961,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// 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 noriginalcurmny = null;//无税金额
@ -1272,6 +1272,20 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
//查询对应的OFS销售订单
List<com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto> headerDetailsDtos = queryOfsOrder(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销售订单优惠金额分摊到明细行
// ofsOrderSaleAmountAllocationUtil.batchTocSalesAmountAllocation(headerDetailsDtos);
//计算OFS销售订单邮费分摊
@ -1770,15 +1784,15 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
totalPayAmount = getRefsaleprice(bdInvmandocEntity, bdInvbasdocEntity, calculationFormulaStr, sonDetailsDto, header);
} else {
//O实付
calculationFormulaStr.append("取O应收金额:");
calculationFormulaStr.append("取O实付金额:");
//触发取实付金额的逻辑因此需要累加O实付金额+O达人优惠+O支付优惠+O平台优惠
//取O实付金额
// totalPayAmount = sonDetailsDto.getTotalPayAmount();
// totalPayAmount = accumulatedDiscounts(sonDetailsDto, headerDetailsDto, targetDetails);
//和万万确认O销售出库单明细行应收金额=O销售订单明细行应收金额/O销售订单明细行请求数量*O销售出库单明细行实发数量
//这里做好必要的参数验证抛出异常
Assert.notNull(targetDetails.getPayableAmount(), "O应收金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
Assert.state(!"".equals(targetDetails.getPayableAmount()), "O应收金额不能为空 O销售订单编码{} O明细行主键{}", header1.getCode(), targetDetails.getId());
Assert.notNull(targetDetails.getTotalPayAmount(), "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.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.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);
totalPayAmount = totalPayAmountBigDecimal.stripTrailingZeros().toPlainString();
// aaa.append(totalPayAmount);
// 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);
}
Assert.notNull(totalPayAmount, "应收金额不能为空(应收金额=实付金额+达人优惠+支付优惠+平台优惠) 销售出库单编码:{} 出库单明细主键:{}", header.getCode(), sonDetailsDto.getId());
Assert.notNull(totalPayAmount, "实付金额不能为空 销售出库单编码:{} 出库单明细主键:{}", header.getCode(), sonDetailsDto.getId());
// String totalPayAmount = getFloorPrice(isCheckShopChoose, bdInvmandocEntity, header, sonDetailsDto, mapList, calculationFormulaStr);
// if (totalPayAmount == null) {
@ -3626,6 +3640,9 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
if (bdTaxitemsEntityList.size() == 0) {
Assert.state(false, "根据存货编码{}没有查询到U8C税目档案", invcode);
}
if (bdTaxitemsEntityList.size() != 4) {
Assert.state(false, "根据存货编码{}没有查询到足够的U8C税目档案", invcode);
}
return bdTaxitemsEntityList.stream().collect(Collectors.toMap(BdTaxitemsEntity::getInvcode, entity -> entity));
}
@ -3844,6 +3861,9 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
saleorderRequestChildrenDto1.setVdef5("0");
saleorderRequestChildrenDto1.setVdef6("0");
saleorderRequestChildrenDto1.setVdef7("0");
//是否赠品
saleorderRequestChildrenDto1.setBlargessflag(false);
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto1);
}

View File

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

View File

@ -112,7 +112,7 @@ class SoSaleOutPluginInitializerToCTest {
// String aaa = "LETS-SH2024102800021196";
// 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) {
e.printStackTrace();
}
@ -120,7 +120,7 @@ class SoSaleOutPluginInitializerToCTest {
// soSaleOutPluginInitializerToC.sendU8CTOCOrder("123446");
try {
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024110100000024", "tran");
soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024120300016549", "stock");
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024110500013375", "tran");
// soSaleOutPluginInitializerToC.startImplementStockByCode("LETS-SH2024111700013756", "tran");