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.setPk_defdoc16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y主键"));
|
||||||
salesInvoiceHeadDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称"));
|
salesInvoiceHeadDto.setVdef16(OverallConstant.getOverAllValue("u8c自定义项档案-单据红字标识-Y名称"));
|
||||||
|
|
||||||
|
//验证是否为指定的店铺,如果为true,则取结存价
|
||||||
|
Boolean isCheckShopChoose = balanceUnitPriceUtil.checkOfsShop(header.getStoreCode());
|
||||||
|
|
||||||
List<SalesInvoiceBodyDto> salesInvoiceBodyDtoList = new ArrayList<>();
|
List<SalesInvoiceBodyDto> salesInvoiceBodyDtoList = new ArrayList<>();
|
||||||
for (int j = 0; j < details.size(); j++) {
|
for (int j = 0; j < details.size(); j++) {
|
||||||
StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j);
|
StockinOrderSearchResponse.StockinOrder.StockinB stockinB = details.get(j);
|
||||||
|
@ -1850,11 +1853,16 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
||||||
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
|
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
|
||||||
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
|
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
|
||||||
|
|
||||||
StringBuffer calculationFormula = new StringBuffer();//计算公式
|
//计算公式
|
||||||
calculationFormula.append("O实退金额");
|
StringBuffer calculationFormula = new StringBuffer();
|
||||||
BigDecimal noriginalcurtaxprice = null;//含税单价
|
// calculationFormula.append("O实退金额");
|
||||||
|
//含税单价
|
||||||
|
BigDecimal noriginalcurtaxprice = null;
|
||||||
|
String totalPayAmount = null;
|
||||||
try {
|
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) {
|
} catch (Exception e) {
|
||||||
logger.error("含税单价金额计算失败!", e);
|
logger.error("含税单价金额计算失败!", e);
|
||||||
Assert.state(false, "含税单价金额计算失败 原因:{}", e.getMessage());
|
Assert.state(false, "含税单价金额计算失败 原因:{}", e.getMessage());
|
||||||
|
@ -1942,6 +1950,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
|
||||||
* @author liuyang
|
* @author liuyang
|
||||||
*/
|
*/
|
||||||
private String createSuccessFulTradeDate(OrderToBHeaderDto orderOutTobHeaderDto) {
|
private String createSuccessFulTradeDate(OrderToBHeaderDto orderOutTobHeaderDto) {
|
||||||
|
// orderOutTobHeaderDto.getHeader().setRefundedAt("2024-11-19 00:00:00");
|
||||||
String code = null;
|
String code = null;
|
||||||
if (orderOutTobHeaderDto != null && orderOutTobHeaderDto.getHeader() != null) {
|
if (orderOutTobHeaderDto != null && orderOutTobHeaderDto.getHeader() != null) {
|
||||||
code = orderOutTobHeaderDto.getHeader().getCode();
|
code = orderOutTobHeaderDto.getHeader().getCode();
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class SoSaleReturnPluginInitializerToCTest {
|
||||||
// soSaleReturnPluginInitializerToC.startImplement(null, null);
|
// soSaleReturnPluginInitializerToC.startImplement(null, null);
|
||||||
try {
|
try {
|
||||||
String code = "LETS-RE2024112900000001";
|
String code = "LETS-RE2024112900000001";
|
||||||
soSaleReturnPluginInitializerToC.startImplementByCode(code, "tran");
|
soSaleReturnPluginInitializerToC.startImplementByCode(code, "stock");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue