refactor(sales): 优化销售退货单的金额计算逻辑
- 新增检查店铺功能,根据店铺类型决定是否取结存价- 修改含税单价计算方式,增加对不同情况的目标金额判断- 优化计算公式的处理,提高代码可读性 -调整测试代码中的实施类型参数
This commit is contained in:
parent
040ccda2fd
commit
a97d7332ff
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue