fix(sales): 修复销售订单和退货订单的金额计算逻辑- 优化了税率计算方法,确保精度准确

- 修复了邮费金额计算的逻辑错误- 优化了优惠金额分摊的处理逻辑
- 调整了测试代码中的参数
This commit is contained in:
liuy 2024-10-24 19:09:16 +08:00
parent 68e1e47828
commit 5942ccab20
7 changed files with 67 additions and 37 deletions

View File

@ -768,7 +768,7 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
//根据存货基础档案编码查询当前存货的税率
BdTaxitemsEntity bdTaxitemsEntity1 = queryBdTaxitems(bdInvbasdocEntity.getInvcode());
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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();
// 如果是海外的店铺则税率为零
String exportVaue = ExportConstant.exportConstant.get(header.getStoreCode());
@ -1002,7 +1002,7 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
// memberId = "9387";
Assert.notNull(memberId, "TOB销售订单(OFS)表头会员id不能为空否则无法匹配U8C客商档案");
Assert.state(!"".equals(memberId.trim()), "TOB销售订单(OFS)表头会员id不能为空否则无法匹配U8C客商档案");
//如果没有O单据名称则默认为销售
if (header2.getSubOrderType() == null || "".equals(header2.getSubOrderType().trim())) {
header2.setSubOrderType("SALES");

View File

@ -867,7 +867,8 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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;//无税金额
BigDecimal noriginalcurtaxprice = null;//含税单价
@ -939,12 +940,15 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
} else {
saleorderRequestChildrenDto.setVdef7("0");
}
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
//判断是否增加邮费这个存货accumulatedPostage
BigDecimal accumulatedPostage = checkPostageFee(oldValue);
//测试测试
accumulatedPostage = new BigDecimal("6");
if (accumulatedPostage != null && accumulatedPostage.compareTo(BigDecimal.ZERO) > 0) {
//获取平台运维对应的税率
String tax2 = "0." + new BigDecimal(bdTaxitemsEntity.getTaxratio()).stripTrailingZeros().toPlainString();
String tax2 = new BigDecimal(bdTaxitemsEntity.getTaxratio()).divide(new BigDecimal(100), 20, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
BigDecimal noriginalcurprice2 = null;//无税单价
BigDecimal noriginalcurmny2 = null;//无税金额
BigDecimal noriginalcurtaxprice2 = null;//含税单价
@ -953,10 +957,10 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
try {
//邮费的汇总金额但是数量永远为1
noriginalcurtaxprice2 = accumulatedPostage.setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny.subtract(noriginalcurmny).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice2.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny2.subtract(noriginalcurmny2).setScale(2, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("邮费TOC金额计算错误", e);
Assert.state(false, "邮费TOC金额计算错误原因{}" + e.getMessage());
@ -993,7 +997,6 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
saleorderRequestChildrenDto2.setVdef7("0");
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto2);
}
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
//销售订单单据推送到u8c
List<SaleorderRequestDto> saleorderRequestDtoList = new ArrayList<>();
@ -1080,6 +1083,8 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
if (header != null && header.getCode() != null) {
code = header.getCode();
}
//测试
// header.setTradeSuccessAt("2024-10-24 14:46:28");
if (header != null && header.getTradeSuccessAt() != null) {
//TOC以出库日期作为业务日期
String tradeSuccessAt = header.getTradeSuccessAt();
@ -1805,7 +1810,8 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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;//无税金额
BigDecimal noriginalcurtaxprice = null;//含税单价
@ -1881,6 +1887,8 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
//判断是否增加邮费这个存货accumulatedPostage
BigDecimal accumulatedPostage = checkPostageFee(oldValue);
//测试
// accumulatedPostage = new BigDecimal("6");
if (accumulatedPostage != null && accumulatedPostage.compareTo(BigDecimal.ZERO) > 0) {
//获取平台运维对应的税率
String tax2 = "0." + new BigDecimal(bdTaxitemsEntity.getTaxratio()).stripTrailingZeros().toPlainString();
@ -1892,10 +1900,10 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
try {
//邮费的汇总金额但是数量永远为1
noriginalcurtaxprice2 = accumulatedPostage.setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny.subtract(noriginalcurmny).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice2.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny2.subtract(noriginalcurmny2).setScale(2, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("邮费TOC金额计算错误", e);
Assert.state(false, "邮费TOC金额计算错误原因{}" + e.getMessage());
@ -2010,7 +2018,8 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
List<SaleorderRequestChildrenDto> saleorderRequestChildrenDtoList = new ArrayList<>();
saleorderRequestDto.setChildrenvo(saleorderRequestChildrenDtoList);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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;//无税金额
BigDecimal noriginalcurtaxprice = null;//含税单价
@ -2080,9 +2089,11 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
saleorderRequestChildrenDto.setVdef7("0");
}
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
//判断是否增加邮费这个存货accumulatedPostage
BigDecimal accumulatedPostage = checkPostageFee(oldValue);
//测试
// accumulatedPostage = new BigDecimal("6");
if (accumulatedPostage != null && accumulatedPostage.compareTo(BigDecimal.ZERO) > 0) {
//获取平台运维对应的税率
String tax2 = "0." + new BigDecimal(bdTaxitemsEntity.getTaxratio()).stripTrailingZeros().toPlainString();
@ -2094,10 +2105,10 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
try {
//邮费的汇总金额但是数量永远为1
noriginalcurtaxprice2 = accumulatedPostage.setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny.subtract(noriginalcurmny).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurprice2 = noriginalcurtaxprice2.divide(new BigDecimal(1).add(new BigDecimal(tax2)), 20, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP);
noriginalcurmny2 = noriginalcurprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcursummny2 = noriginalcurtaxprice2.multiply(new BigDecimal("1")).setScale(2, BigDecimal.ROUND_HALF_UP);
noriginalcurtaxmny2 = noriginalcursummny2.subtract(noriginalcurmny2).setScale(2, BigDecimal.ROUND_HALF_UP);
} catch (Exception e) {
logger.error("邮费TOC金额计算错误", e);
Assert.state(false, "邮费TOC金额计算错误原因{}" + e.getMessage());
@ -2134,7 +2145,6 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
saleorderRequestChildrenDto2.setVdef7("0");
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto2);
}
saleorderRequestChildrenDtoList.add(saleorderRequestChildrenDto);
//销售订单单据推送到u8c
List<SaleorderRequestDto> saleorderRequestDtoList = new ArrayList<>();
@ -2894,7 +2904,9 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
com.hzya.frame.ttxofs.dto.ofssalesordersearch.DetailsDto ofsOrderDetail = findOfsOrderDetail(sonDetailsDto);
if (ofsOrderDetail != null) {
BigDecimal shareTargetFreightDiscounts = ofsOrderDetail.getShareTargetFreightDiscounts();
shareTargetFreightTotalDiscounts = shareTargetFreightTotalDiscounts.add(shareTargetFreightDiscounts);
if (shareTargetFreightDiscounts != null) {
shareTargetFreightTotalDiscounts = shareTargetFreightTotalDiscounts.add(shareTargetFreightDiscounts);
}
}
}
}
@ -3011,7 +3023,7 @@ public class SoSaleOutPluginInitializerToC extends PluginBaseEntity {
BdInvmandocEntity bdInvmandocEntity = new BdInvmandocEntity();
bdInvmandocEntity.setPkInvbasdoc(pk_invbasdoc);
bdInvmandocEntity.setDataSourceCode(ProfilesActiveConstant.LETS_DATE_SOURCE);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.queryBdInvmandocByInvcodeList(bdInvmandocEntity);
List<BdInvmandocEntity> bdInvmandocEntity2 = iBdInvmandocDao.query(bdInvmandocEntity);
if (bdInvmandocEntity2 == null || bdInvmandocEntity2.size() == 0) {
Assert.state(false, "无法查询到所有公司对应的存货管理档案 存货管理档案主键:{}", pk_invbasdoc);
}

View File

@ -760,7 +760,7 @@ public class SoSaleReturnPluginInitializerToB extends PluginBaseEntity {
//取对应的售后订单明细主要是取这个价格
RerturnGoodsOrderSearchDetails afterSalesOrder = findAfterSalesOrder(stockinB, ofsRertunOrder1);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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();
//查询收支项目
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);

View File

@ -679,7 +679,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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;//无税金额
BigDecimal noriginalcurtaxprice = null;//含税单价
@ -891,7 +892,8 @@ public class SoSaleReturnPluginInitializerToC extends PluginBaseEntity {
// BdInvclEntity bdInvclEntity = queryU8CEntityUtil.queryBdInvbasdocByBdInvcl(bdInvbasdocEntity);
// BdCostsubjEntity bdCostsubjEntity = queryU8CEntityUtil.queryBdCostsubj(bdInvclEntity);
String tax = "0." + new BigDecimal(bdTaxitemsEntity1.getTaxratio()).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;//无税金额
BigDecimal noriginalcurtaxprice = null;//含税单价

View File

@ -161,23 +161,31 @@ public class OfsOrderAfterSalesAmountAllocationUtil {
//原始优惠金额-sum分摊金额
BigDecimal subtract = targetPlatformDiscounts.subtract(totalShareTargetPlatformDiscounts);
BigDecimal shareTargetPlatformDiscounts1 = rerturnGoodsOrderSearchDetails1.getShareTargetPlatformDiscounts();
rerturnGoodsOrderSearchDetails1.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
rerturnGoodsOrderSearchDetails1.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetMerchantDiscounts.stripTrailingZeros().toPlainString()) && rerturnGoodsOrderSearchDetails1.getShareTargetMerchantDiscounts() != null) {
//原始优惠金额-sum分摊金额
BigDecimal subtract = targetMerchantDiscounts.subtract(totalShareTargetMerchantDiscounts);
BigDecimal shareTargetPlatformDiscounts1 = rerturnGoodsOrderSearchDetails1.getShareTargetPlatformDiscounts();
rerturnGoodsOrderSearchDetails1.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
BigDecimal shareTargetPlatformDiscounts1 = rerturnGoodsOrderSearchDetails1.getShareTargetMerchantDiscounts();
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
rerturnGoodsOrderSearchDetails1.setShareTargetMerchantDiscounts(shareTargetPlatformDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetExpertDiscounts.stripTrailingZeros().toPlainString()) && rerturnGoodsOrderSearchDetails1.getShareTargetExpertDiscounts() != null) {
BigDecimal subtract = targetExpertDiscounts.subtract(totalShareTargetExpertDiscounts);
BigDecimal shareTargetExpertDiscounts1 = rerturnGoodsOrderSearchDetails1.getShareTargetExpertDiscounts();
rerturnGoodsOrderSearchDetails1.setShareTargetExpertDiscounts(shareTargetExpertDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
rerturnGoodsOrderSearchDetails1.setShareTargetExpertDiscounts(shareTargetExpertDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetPayDiscounts.stripTrailingZeros().toPlainString()) && rerturnGoodsOrderSearchDetails1.getShareTargetPayDiscounts() != null) {
BigDecimal subtract = targetPayDiscounts.subtract(totalShareTargetPayDiscounts);
BigDecimal shareTargetPayDiscounts1 = rerturnGoodsOrderSearchDetails1.getShareTargetPayDiscounts();
rerturnGoodsOrderSearchDetails1.setShareTargetPayDiscounts(shareTargetPayDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
rerturnGoodsOrderSearchDetails1.setShareTargetPayDiscounts(shareTargetPayDiscounts1.add(subtract));
}
}
}

View File

@ -155,23 +155,31 @@ public class OfsOrderSaleAmountAllocationUtil {
//原始优惠金额-sum分摊金额
BigDecimal subtract = targetPlatformDiscounts.subtract(totalShareTargetPlatformDiscounts);
BigDecimal shareTargetPlatformDiscounts1 = detailsDto.getShareTargetPlatformDiscounts();
detailsDto.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
detailsDto.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetMerchantDiscounts.stripTrailingZeros().toPlainString()) && detailsDto.getShareTargetMerchantDiscounts() != null) {
//原始优惠金额-sum分摊金额
BigDecimal subtract = targetMerchantDiscounts.subtract(totalShareTargetMerchantDiscounts);
BigDecimal shareTargetPlatformDiscounts1 = detailsDto.getShareTargetPlatformDiscounts();
detailsDto.setShareTargetPlatformDiscounts(shareTargetPlatformDiscounts1.add(subtract));
BigDecimal shareTargetPlatformDiscounts1 = detailsDto.getShareTargetMerchantDiscounts();
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
detailsDto.setShareTargetMerchantDiscounts(shareTargetPlatformDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetExpertDiscounts.stripTrailingZeros().toPlainString()) && detailsDto.getShareTargetExpertDiscounts() != null) {
BigDecimal subtract = targetExpertDiscounts.subtract(totalShareTargetExpertDiscounts);
BigDecimal shareTargetExpertDiscounts1 = detailsDto.getShareTargetExpertDiscounts();
detailsDto.setShareTargetExpertDiscounts(shareTargetExpertDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
detailsDto.setShareTargetExpertDiscounts(shareTargetExpertDiscounts1.add(subtract));
}
}
if (!"0".equals(totalShareTargetPayDiscounts.stripTrailingZeros().toPlainString()) && detailsDto.getShareTargetPayDiscounts() != null) {
BigDecimal subtract = targetPayDiscounts.subtract(totalShareTargetPayDiscounts);
BigDecimal shareTargetPayDiscounts1 = detailsDto.getShareTargetPayDiscounts();
detailsDto.setShareTargetPayDiscounts(shareTargetPayDiscounts1.add(subtract));
if (subtract.compareTo(BigDecimal.ZERO) > 0) {
detailsDto.setShareTargetPayDiscounts(shareTargetPayDiscounts1.add(subtract));
}
}
}

View File

@ -98,7 +98,7 @@ class SoSaleOutPluginInitializerToCTest {
try {
// soSaleOutPluginInitializerToC.startImplementStockByTime("2024-10-18 00:00:00", "2024-10-18 23:59:59");
String code = "LETS-SH2024102100026682";
soSaleOutPluginInitializerToC.startImplementStockByCode(code, "stock");
soSaleOutPluginInitializerToC.startImplementStockByCode(code, "tran");
} catch (Exception e) {
e.printStackTrace();
}