refactor(sales): 优化销售退货单的金额计算逻辑

- 新增检查店铺功能,根据店铺类型决定是否取结存价- 修改含税单价计算方式,增加对不同情况的目标金额判断- 优化计算公式的处理,提高代码可读性
-调整测试代码中的实施类型参数
This commit is contained in:
liuy 2024-11-29 14:27:53 +08:00
parent 040ccda2fd
commit a97d7332ff
2 changed files with 14 additions and 5 deletions

View File

@ -1831,6 +1831,9 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
salesInvoiceHeadDto.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键"));
salesInvoiceHeadDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称"));
//验证是否为指定的店铺如果为true则取结存价
Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode());
List<SalesInvoiceBodyDto> salesInvoiceBodyDtoList = new ArrayList<>();
for (int j = 0; j < details.size(); j++) {
StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j);
@ -1850,11 +1853,16 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
StringBuffer calculationFormula = new StringBuffer();//计算公式
calculationFormula.append("O实退金额");
BigDecimal noriginalcurtaxprice = null;//含税单价
//计算公式
StringBuffer calculationFormula = new StringBuffer();
// calculationFormula.append("O实退金额");
//含税单价
BigDecimal noriginalcurtaxprice = null;
String totalPayAmount = null;
try {
noriginalcurtaxprice = new BigDecimal(afterSalesOrder.getTotalAmount()).divide(new BigDecimal(stockinB.getReceivedQty()), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
//综合判断对应的目标金额
totalPayAmount = getFloorPrice(isCheckShopChoose, bdInvmandocEntity, header, afterSalesOrder, calculationFormula, stockinB, bdInvbasdocEntity);
noriginalcurtaxprice = new BigDecimal(totalPayAmount).divide(new BigDecimal(stockinB.getReceivedQty()), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("含税单价金额计算失败!", e);
Assert.state(false, "含税单价金额计算失败 原因:{}", e.getMessage());
@ -1942,6 +1950,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
* @author liuyang
*/
private String createSuccessFulTradeDate(OrderToBHeaderDto orderOutTobHeaderDto) {
// orderOutTobHeaderDto.getHeader().setRefundedAt("2024-11-19 00:00:00");
String code = null;
if (orderOutTobHeaderDto != null && orderOutTobHeaderDto.getHeader() != null) {
code = orderOutTobHeaderDto.getHeader().getCode();

View File

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