修复OFS售后入库单优惠金额计算问题
- 在SoSaleReturnPluginInitializerToC类中添加累加优惠金额的方法 - 修改GoodsRertunSonDetailsDto类,增加优惠金额字段 - 在OfsOrderAfterSalesAmountAllocationUtil类中移除测试代码 -优化OfsOrderSaleAmountAllocationUtil类中的测试代码
This commit is contained in:
parent
b3d244f415
commit
bbba76de05
|
@ -1835,7 +1835,7 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
|
|||
//单据红字标识
|
||||
salesInvoiceHeadDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N主键"));
|
||||
salesInvoiceHeadDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-N名称"));
|
||||
|
||||
|
||||
List<SalesInvoiceBodyDto> salesInvoiceBodyDtoList = new ArrayList<>();
|
||||
for (int j = 0; j < details.size(); j++) {
|
||||
DetailsDto detailsDto = details.get(j);
|
||||
|
|
|
@ -862,10 +862,10 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
|
|||
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
|
||||
|
||||
//销售订单单据推送到u8c
|
||||
//TODO 测试
|
||||
if (true) {
|
||||
continue;
|
||||
}
|
||||
//测试
|
||||
// if (true) {
|
||||
// continue;
|
||||
// }
|
||||
List<SaleorderRequestDto> saleorderRequestDtoList = new ArrayList<>();
|
||||
saleorderRequestDtoList.add(saleorderRequestDto);
|
||||
|
||||
|
|
|
@ -683,6 +683,27 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
saleorderRequestChildrenDto.setNtaxrate(new BigDecimal(bdTaxitemsEntity1.getTaxratio()).stripTrailingZeros().toPlainString());//税率
|
||||
// saleorderRequestChildrenDto.setVdef2(bdCostsubjEntity.getCostname());//收支项目
|
||||
// saleorderRequestChildrenDto.setPk_defdoc2(bdCostsubjEntity.getPkCostsubj());
|
||||
//如果优惠金额为0,则传0
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef4("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef5("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef6("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef7("0");
|
||||
}
|
||||
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
|
||||
|
||||
//销售订单单据推送到u8c
|
||||
|
@ -869,6 +890,27 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
saleorderRequestChildrenDto.setNtaxrate(new BigDecimal(bdTaxitemsEntity1.getTaxratio()).stripTrailingZeros().toPlainString());//税率
|
||||
// saleorderRequestChildrenDto.setVdef2(bdCostsubjEntity.getCostname());//收支项目
|
||||
// saleorderRequestChildrenDto.setPk_defdoc2(bdCostsubjEntity.getPkCostsubj());
|
||||
//如果优惠金额为0,则传0
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef4("-" + goodsRertunSonDetailsDto.getVdef4().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef4("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef5("-" + goodsRertunSonDetailsDto.getVdef5().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef5("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef6("-" + goodsRertunSonDetailsDto.getVdef6().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef6("0");
|
||||
}
|
||||
if (goodsRertunSonDetailsDto != null && !"0".equals(goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString())) {
|
||||
saleorderRequestChildrenDto.setVdef7("-" + goodsRertunSonDetailsDto.getVdef7().stripTrailingZeros().toPlainString());
|
||||
} else {
|
||||
saleorderRequestChildrenDto.setVdef7("0");
|
||||
}
|
||||
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
|
||||
|
||||
//销售订单单据推送到u8c
|
||||
|
@ -1376,6 +1418,10 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(0);
|
||||
goodsRertunSonDetailsDto.setGroupShipQty(groupShipQty);
|
||||
goodsRertunSonDetailsDto.setGroupTotalPayAmount(groupTotalPayAmount);
|
||||
|
||||
//累加优惠金额
|
||||
accumulationDiscountAmount(sonDetailsDtoList);
|
||||
|
||||
logger.info("TOB{}个明细行发生了合并!", sonDetailsDtoList.size());
|
||||
return goodsRertunSonDetailsDto;
|
||||
} else {
|
||||
|
@ -2144,4 +2190,85 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
|
|||
}
|
||||
return dateRange;
|
||||
}
|
||||
|
||||
/**
|
||||
* 累加平台优惠
|
||||
*
|
||||
* @param sonDetailsDtoList OFS售后入库单
|
||||
* @author liuyang
|
||||
*/
|
||||
private void accumulationDiscountAmount(List<GoodsRertunSonDetailsDto> sonDetailsDtoList) throws Exception {
|
||||
Assert.notNull(sonDetailsDtoList, "sonDetailsDtoList不能为空");
|
||||
|
||||
if (sonDetailsDtoList.size() > 0) {
|
||||
BigDecimal totalShareTargetPlatformDiscounts = new BigDecimal("0");
|
||||
BigDecimal totalShareTargetMerchantDiscounts = new BigDecimal("0");
|
||||
BigDecimal totalShareTargetExpertDiscounts = new BigDecimal("0");
|
||||
BigDecimal totalShareTargetPayDiscounts = new BigDecimal("0");
|
||||
|
||||
for (int i = 0; i < sonDetailsDtoList.size(); i++) {
|
||||
//OFS售后入库单表体
|
||||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(i);
|
||||
//OFS售后入库单表头
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header1 = goodsRertunSonDetailsDto.getHeader();
|
||||
Assert.notNull(header1, "OFS售后入库单表头不能为空!");
|
||||
//OFS售后订单
|
||||
RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData = header1.getRerturnGoodsOrderSearchData();
|
||||
Assert.notNull(rerturnGoodsOrderSearchData, "通过OFS售后入库单号无法关联批量到OFS售后订单! OFS售后入库单编码:{} OFS售后订单号:{}", header1.getCode(), header1.getRefOrderCode());
|
||||
RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchData.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> details = rerturnGoodsOrderSearchData.getDetails();
|
||||
|
||||
//四舍五入保留2位
|
||||
RerturnGoodsOrderSearchDetails ofsOrderDetail = findOfsOrderDetail(details, goodsRertunSonDetailsDto);
|
||||
if (ofsOrderDetail.getShareTargetPlatformDiscounts() != null) {
|
||||
totalShareTargetPlatformDiscounts = totalShareTargetPlatformDiscounts.add(ofsOrderDetail.getShareTargetPlatformDiscounts());
|
||||
}
|
||||
if (ofsOrderDetail.getShareTargetMerchantDiscounts() != null) {
|
||||
totalShareTargetMerchantDiscounts = totalShareTargetMerchantDiscounts.add(ofsOrderDetail.getShareTargetMerchantDiscounts());
|
||||
}
|
||||
if (ofsOrderDetail.getShareTargetExpertDiscounts() != null) {
|
||||
totalShareTargetExpertDiscounts = totalShareTargetExpertDiscounts.add(ofsOrderDetail.getShareTargetExpertDiscounts());
|
||||
}
|
||||
if (ofsOrderDetail.getShareTargetPayDiscounts() != null) {
|
||||
totalShareTargetPayDiscounts = totalShareTargetPayDiscounts.add(ofsOrderDetail.getShareTargetPayDiscounts());
|
||||
}
|
||||
logger.info("对应的售后入库单明细行主键:{}", goodsRertunSonDetailsDto.getId());
|
||||
}
|
||||
|
||||
GoodsRertunSonDetailsDto goodsRertunSonDetailsDto = sonDetailsDtoList.get(0);
|
||||
StockinOrderSearchResponse.StockinOrder.StockinH header = goodsRertunSonDetailsDto.getHeader();
|
||||
|
||||
goodsRertunSonDetailsDto.setVdef4(totalShareTargetPlatformDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
goodsRertunSonDetailsDto.setVdef5(totalShareTargetMerchantDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
goodsRertunSonDetailsDto.setVdef6(totalShareTargetExpertDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
goodsRertunSonDetailsDto.setVdef7(totalShareTargetPayDiscounts.setScale(2, BigDecimal.ROUND_HALF_UP));
|
||||
|
||||
logger.info("售后入库明细主键:{} 售后入库单号:{} 最终汇总好的平台优惠:{}、支付优惠:{}、达人优惠:{}、商家优惠:{}", goodsRertunSonDetailsDto.getId(), header.getCode(), goodsRertunSonDetailsDto.getVdef4(), goodsRertunSonDetailsDto.getVdef5(), goodsRertunSonDetailsDto.getVdef6(), goodsRertunSonDetailsDto.getVdef7());
|
||||
} else {
|
||||
logger.info("accumulationDiscountAmount方法对应的sonDetailsDtoList.size为零!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据OFS售后入库单明细行,查找匹配OFS售后订单明细行
|
||||
*
|
||||
* @param details OFS售后订单明细行
|
||||
* @param goodsRertunSonDetailsDto OFS售后入库单明细对象
|
||||
* @author liuyang
|
||||
*/
|
||||
private RerturnGoodsOrderSearchDetails findOfsOrderDetail(List<RerturnGoodsOrderSearchDetails> details, GoodsRertunSonDetailsDto goodsRertunSonDetailsDto) {
|
||||
Assert.notNull(details, "details不能为空");
|
||||
Assert.notNull(goodsRertunSonDetailsDto, "goodsRertunSonDetailsDto不能为空");
|
||||
|
||||
for (int i = 0; i < details.size(); i++) {
|
||||
RerturnGoodsOrderSearchDetails rerturnGoodsOrderSearchDetails = details.get(i);
|
||||
if (goodsRertunSonDetailsDto.getRefOrderDetailId() != null && rerturnGoodsOrderSearchDetails.getId() != null) {
|
||||
if (goodsRertunSonDetailsDto.getRefOrderDetailId().equals(rerturnGoodsOrderSearchDetails.getId())) {
|
||||
return rerturnGoodsOrderSearchDetails;
|
||||
}
|
||||
}
|
||||
}
|
||||
Assert.state(false, "根据OFS售后入库单明细行,无法查找OFS售后订单明细行 来源明细行主键:{} 来源单据主键:{}", goodsRertunSonDetailsDto.getRefOrderDetailId(), goodsRertunSonDetailsDto.getRefOrderId());
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -119,4 +119,16 @@ public class GoodsRertunSonDetailsDto extends StockinOrderSearchResponse.Stockin
|
|||
* 存货税率
|
||||
*/
|
||||
private BdTaxitemsEntity bdTaxitemsEntity;
|
||||
|
||||
//累加平台优惠
|
||||
private BigDecimal vdef4;
|
||||
|
||||
//累加支付优惠
|
||||
private BigDecimal vdef5;
|
||||
|
||||
//累加达人优惠
|
||||
private BigDecimal vdef6;
|
||||
|
||||
//累加商家优惠
|
||||
private BigDecimal vdef7;
|
||||
}
|
|
@ -58,8 +58,16 @@ public class OfsOrderAfterSalesAmountAllocationUtil {
|
|||
* @author liuyang
|
||||
*/
|
||||
public void tocSalesAmountAllocation(RerturnGoodsOrderSearchData rerturnGoodsOrderSearchData) throws Exception {
|
||||
Assert.notNull(rerturnGoodsOrderSearchData, "rerturnGoodsOrderSearchData不能为空");
|
||||
logger.info("==TOC退货金额分摊开始==");
|
||||
|
||||
//测试
|
||||
// RerturnGoodsOrderSearchHeader header2 = rerturnGoodsOrderSearchData.getHeader();
|
||||
// header2.setPlatformDiscounts("3.75");
|
||||
// header2.setMerchantDiscounts("7.88");
|
||||
// header2.setExpertDiscounts("4.22");
|
||||
// header2.setPayDiscounts("1.96");
|
||||
|
||||
Assert.notNull(rerturnGoodsOrderSearchData, "OFS售后订单对象不能为空");
|
||||
RerturnGoodsOrderSearchHeader header = rerturnGoodsOrderSearchData.getHeader();
|
||||
List<RerturnGoodsOrderSearchDetails> detailsOld = rerturnGoodsOrderSearchData.getDetails();
|
||||
|
|
|
@ -57,12 +57,12 @@ public class OfsOrderSaleAmountAllocationUtil {
|
|||
public void tocSalesAmountAllocation(com.hzya.frame.ttxofs.dto.ofssalesordersearch.HeaderDetailsDto headerDetailsDto) throws Exception {
|
||||
logger.info("==TOC销售金额分摊开始==");
|
||||
|
||||
//TODO 测试
|
||||
HeaderDto header1 = headerDetailsDto.getHeader();
|
||||
header1.setPlatformDiscounts("2.3");
|
||||
header1.setMerchantDiscounts("4.9");
|
||||
header1.setExpertDiscounts("1.2");
|
||||
header1.setPayDiscounts("6.7");
|
||||
//测试
|
||||
// HeaderDto header1 = headerDetailsDto.getHeader();
|
||||
// header1.setPlatformDiscounts("2.3");
|
||||
// header1.setMerchantDiscounts("4.9");
|
||||
// header1.setExpertDiscounts("1.2");
|
||||
// header1.setPayDiscounts("6.7");
|
||||
|
||||
Assert.notNull(headerDetailsDto, "OFS销售订单对象不能为空");
|
||||
HeaderDto header = headerDetailsDto.getHeader();
|
||||
|
|
|
@ -44,6 +44,7 @@ public class RerturnGoodsOrderSearchDetails {
|
|||
private String createdBy;
|
||||
private String lastUpdated;
|
||||
private String lastUpdatedBy;
|
||||
private String refOrderDetailId;
|
||||
|
||||
//分摊比例
|
||||
private BigDecimal sharingRatio;
|
||||
|
|
Loading…
Reference in New Issue