feature:1.支持单折扣行,2.生成预制加锁

zkh
路明慧 11 months ago
parent 85102bb457
commit bcbcc34235
  1. 10
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/constant/RedisConstant.java
  2. 42
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/SkOrderServiceImpl.java
  3. 50
      order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/YyOrderServiceImpl.java

@ -47,6 +47,16 @@ public class RedisConstant {
*/ */
public static final String REDIS_INTERFACE_RECEIVE = "xxfp:order:receive:%s"; public static final String REDIS_INTERFACE_RECEIVE = "xxfp:order:receive:%s";
/**
* 用友生成预制发票
*/
public static final String REDIS_YY_ORDER_EXTRACT = "xxfp:order:yy:extract:%s";
/**
* 时空生成预制发票
*/
public static final String REDIS_SK_ORDER_EXTRACT = "xxfp:order:sk:extract:%s";
/** /**
* 订单接收数据,验证是否超过限制次数 * 订单接收数据,验证是否超过限制次数
*/ */

@ -14,9 +14,11 @@ import com.dxhy.base.service.module.thirdservice.user.model.DeptEntity;
import com.dxhy.base.service.module.thirdservice.user.service.UserInfoService; import com.dxhy.base.service.module.thirdservice.user.service.UserInfoService;
import com.dxhy.base.service.openapi.protocol.qd.PageGfxxReq; import com.dxhy.base.service.openapi.protocol.qd.PageGfxxReq;
import com.dxhy.base.thirdservice.module.base.service.BaseService; import com.dxhy.base.thirdservice.module.base.service.BaseService;
import com.dxhy.base.thirdservice.module.thirdservice.redis.service.RedissonService;
import com.dxhy.management.common.constant.ConfigureConstant; import com.dxhy.management.common.constant.ConfigureConstant;
import com.dxhy.order.baseservice.constant.ConfigurerInfo; import com.dxhy.order.baseservice.constant.ConfigurerInfo;
import com.dxhy.order.baseservice.constant.OrderValidateEnum; import com.dxhy.order.baseservice.constant.OrderValidateEnum;
import com.dxhy.order.baseservice.constant.RedisConstant;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo; import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo; import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
import com.dxhy.order.consumer.dao.SkOrderInfoMapper; import com.dxhy.order.consumer.dao.SkOrderInfoMapper;
@ -32,6 +34,7 @@ import com.dxhy.order.consumer.modules.bespoke.model.sk.BackProduct;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderInfo;
import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo; import com.dxhy.order.consumer.modules.bespoke.model.sk.SkOrderItemInfo;
import com.dxhy.order.consumer.modules.bespoke.model.yy.NewTable; import com.dxhy.order.consumer.modules.bespoke.model.yy.NewTable;
import com.dxhy.order.consumer.modules.bespoke.model.yy.YyOrderItemInfo;
import com.dxhy.order.consumer.modules.bespoke.service.OrderService; import com.dxhy.order.consumer.modules.bespoke.service.OrderService;
import com.dxhy.order.consumer.openapi.protocol.v4.order.*; import com.dxhy.order.consumer.openapi.protocol.v4.order.*;
import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO; import com.dxhy.order.consumer.openapi.protocol.v6.order.QdTxxBO;
@ -42,6 +45,7 @@ import com.github.pagehelper.page.PageMethod;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -88,6 +92,9 @@ public class SkOrderServiceImpl implements OrderService {
@Resource @Resource
private TInvoiceInvmapMapper tInvoiceInvmapMapper; private TInvoiceInvmapMapper tInvoiceInvmapMapper;
@Resource
private RedissonService redissonService;
// 订单读入 // 订单读入
@Override @Override
public R orderRead(ReqParam reqParam) { public R orderRead(ReqParam reqParam) {
@ -167,7 +174,11 @@ public class SkOrderServiceImpl implements OrderService {
for (SkOrderInfo skOrderInfo : skOrderInfoList) { for (SkOrderInfo skOrderInfo : skOrderInfoList) {
String cdlCodeKey = String.format(RedisConstant.REDIS_SK_ORDER_EXTRACT, skOrderInfo.getXsddm());
RLock lock = redissonService.getLock(cdlCodeKey);
boolean locked = lock.tryLock();
try { try {
if (locked){
List<SkOrderItemInfo> skOrderItemInfoList = skOrderItemInfoMapper.queryOrderItemInfo(skOrderInfo.getId()); List<SkOrderItemInfo> skOrderItemInfoList = skOrderItemInfoMapper.queryOrderItemInfo(skOrderInfo.getId());
if (CollectionUtils.isNotEmpty(skOrderItemInfoList)) { if (CollectionUtils.isNotEmpty(skOrderItemInfoList)) {
DdpcxxReqBO ddpcxxReqBO = transitionReadData(skOrderInfo, skOrderItemInfoList, deptEntity); DdpcxxReqBO ddpcxxReqBO = transitionReadData(skOrderInfo, skOrderItemInfoList, deptEntity);
@ -184,11 +195,19 @@ public class SkOrderServiceImpl implements OrderService {
} else { } else {
backMessage.add(String.format(message, skOrderInfo.getXsddm(), "订单明细信息丢失请删除重新读入")); backMessage.add(String.format(message, skOrderInfo.getXsddm(), "订单明细信息丢失请删除重新读入"));
} }
}else {
backMessage.add(String.format(message, skOrderInfo.getXsddm(), "订单正在生成发票,请稍后再试"));
log.info("订单正在生成发票,请稍后再试");
}
} catch (Exception e) { } catch (Exception e) {
log.error("保存发票异常{}", e); log.error("保存发票异常{}", e);
String format = String.format(message, skOrderInfo.getXsddm(), "生成发票异常请联系管理员"); String format = String.format(message, skOrderInfo.getXsddm(), "生成发票异常请联系管理员");
backMessage.add(format); backMessage.add(format);
}finally {
if (locked){
lock.unlock();
}
} }
} }
@ -368,22 +387,27 @@ public class SkOrderServiceImpl implements OrderService {
String invoiceAmount = ConfigureConstant.STRING_0; String invoiceAmount = ConfigureConstant.STRING_0;
String taxAmount = ConfigureConstant.STRING_0; String taxAmount = ConfigureConstant.STRING_0;
boolean isZk = skOrderItemInfoList.size()>ConfigureConstant.INT_1;
String xmmc = skOrderItemInfoList.get(ConfigureConstant.INT_0).getCpmc();
if (isZk){
List<SkOrderItemInfo> collect = skOrderItemInfoList.stream().filter(item -> DecimalCalculateUtil.stringCompare(item.getHsje(), ConfigureConstant.STRING_0) > ConfigureConstant.INT_0).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)){
xmmc = collect.get(ConfigureConstant.INT_0).getCpmc();
}
}
//发票明细信息 //发票明细信息
List<DdmxxxBO> ddmxxxBOList = new ArrayList<>(); List<DdmxxxBO> ddmxxxBOList = new ArrayList<>();
int index = ConfigureConstant.INT_0; int index = ConfigureConstant.INT_0;
boolean isZk = !skOrderItemInfoList.stream().filter(item->item.getXgdjbh().startsWith("XSB")).collect(Collectors.toList()).isEmpty();
for (SkOrderItemInfo orderItemInfo : skOrderItemInfoList) { for (SkOrderItemInfo orderItemInfo : skOrderItemInfoList) {
DdmxxxBO ddmxxxBO = new DdmxxxBO(); DdmxxxBO ddmxxxBO = new DdmxxxBO();
ddmxxxBO.setXH(String.valueOf(++index)); ddmxxxBO.setXH(String.valueOf(++index));
ddmxxxBO.setXMMC(orderItemInfo.getCpmc()); ddmxxxBO.setXMMC(orderItemInfo.getCpmc());
ddmxxxBO.setGGXH(orderItemInfo.getXh()); ddmxxxBO.setGGXH(orderItemInfo.getXh());
ddmxxxBO.setDW(orderItemInfo.getCpdw()); ddmxxxBO.setDW(orderItemInfo.getCpdw());
String sl = DecimalCalculateUtil.dynamicDecimalFormatToStringWithoutZero(orderItemInfo.getCpsl(), skOrderInfo.getFplx(), taxEquipmentInfo.getQdfwlx());
ddmxxxBO.setSPSL(sl);
ddmxxxBO.setJE(new BigDecimal(orderItemInfo.getHsje()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setJE(new BigDecimal(orderItemInfo.getHsje()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString());
ddmxxxBO.setSL(new BigDecimal(orderItemInfo.getSl()).divide(new BigDecimal(ConfigureConstant.STRING_100)).toPlainString()); ddmxxxBO.setSL(new BigDecimal(orderItemInfo.getSl()).divide(new BigDecimal(ConfigureConstant.STRING_100)).toPlainString());
ddmxxxBO.setSE(new BigDecimal(orderItemInfo.getSe()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setSE(new BigDecimal(orderItemInfo.getSe()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString());
ddmxxxBO.setDJ(getDynamicLengthDecimal(ddmxxxBO.getJE(), ddmxxxBO.getSPSL()));
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0); ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0);
ddmxxxBO.setBZ(orderItemInfo.getBeizhu()); ddmxxxBO.setBZ(orderItemInfo.getBeizhu());
ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1); ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1);
@ -400,10 +424,20 @@ public class SkOrderServiceImpl implements OrderService {
if (orderItemInfo.getXgdjbh().startsWith("XSB")){ if (orderItemInfo.getXgdjbh().startsWith("XSB")){
ddmxxxBO.setXH(ConfigureConstant.STRING_2); ddmxxxBO.setXH(ConfigureConstant.STRING_2);
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_1); ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_1);
ddmxxxBO.setXMMC(xmmc);
} }
} }
//非折扣行计算单价和数量
if(StringUtils.isNotBlank(orderItemInfo.getHsje()) && DecimalCalculateUtil.stringCompare(orderItemInfo.getHsje(), ConfigureConstant.STRING_0) > ConfigureConstant.INT_0){
String sl = DecimalCalculateUtil.dynamicDecimalFormatToStringWithoutZero(orderItemInfo.getCpsl(), skOrderInfo.getFplx(), taxEquipmentInfo.getQdfwlx());
ddmxxxBO.setSPSL(sl);
ddmxxxBO.setDJ(getDynamicLengthDecimal(ddmxxxBO.getJE(), ddmxxxBO.getSPSL()));
}
ddmxxxBOList.add(ddmxxxBO); ddmxxxBOList.add(ddmxxxBO);
} }
if (isZk){
ddmxxxBOList.sort(Comparator.comparing(DdmxxxBO::getXH));
}
//金额、税额、价税合计 //金额、税额、价税合计
ddtxxBO.setHJSE(taxAmount); ddtxxBO.setHJSE(taxAmount);
ddtxxBO.setHJJE(DecimalCalculateUtil.bigDecimalSub(invoiceAmount, taxAmount, ConfigureConstant.INT_2)); ddtxxBO.setHJJE(DecimalCalculateUtil.bigDecimalSub(invoiceAmount, taxAmount, ConfigureConstant.INT_2));

@ -14,9 +14,11 @@ import com.dxhy.base.service.module.thirdservice.user.model.DeptEntity;
import com.dxhy.base.service.module.thirdservice.user.service.UserInfoService; import com.dxhy.base.service.module.thirdservice.user.service.UserInfoService;
import com.dxhy.base.service.openapi.protocol.qd.PageGfxxReq; import com.dxhy.base.service.openapi.protocol.qd.PageGfxxReq;
import com.dxhy.base.thirdservice.module.base.service.BaseService; import com.dxhy.base.thirdservice.module.base.service.BaseService;
import com.dxhy.base.thirdservice.module.thirdservice.redis.service.RedissonService;
import com.dxhy.management.common.constant.ConfigureConstant; import com.dxhy.management.common.constant.ConfigureConstant;
import com.dxhy.order.baseservice.constant.ConfigurerInfo; import com.dxhy.order.baseservice.constant.ConfigurerInfo;
import com.dxhy.order.baseservice.constant.OrderValidateEnum; import com.dxhy.order.baseservice.constant.OrderValidateEnum;
import com.dxhy.order.baseservice.constant.RedisConstant;
import com.dxhy.order.baseservice.model.OrderInvoiceInfo; import com.dxhy.order.baseservice.model.OrderInvoiceInfo;
import com.dxhy.order.baseservice.model.OrderOriginExtendInfo; import com.dxhy.order.baseservice.model.OrderOriginExtendInfo;
import com.dxhy.order.consumer.dao.TInvoiceInvmapMapper; import com.dxhy.order.consumer.dao.TInvoiceInvmapMapper;
@ -43,6 +45,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -50,6 +53,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service("yyOrderService") @Service("yyOrderService")
@ -94,6 +98,9 @@ public class YyOrderServiceImpl implements OrderService {
@Resource @Resource
private OrderInvoiceInfoServiceImpl orderInvoiceInfoService; private OrderInvoiceInfoServiceImpl orderInvoiceInfoService;
@Resource
private RedissonService redissonService;
//订单读入 //订单读入
@Override @Override
public R orderRead(ReqParam reqParam) { public R orderRead(ReqParam reqParam) {
@ -171,7 +178,11 @@ public class YyOrderServiceImpl implements OrderService {
for (YyOrderInfo yyOrderInfo : yyOrderInfoList) { for (YyOrderInfo yyOrderInfo : yyOrderInfoList) {
String cdlCodeKey = String.format(RedisConstant.REDIS_YY_ORDER_EXTRACT, yyOrderInfo.getCdlcode());
RLock lock = redissonService.getLock(cdlCodeKey);
boolean locked = lock.tryLock();
try { try {
if (locked){
List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderItemInfoMapper.queryOrderItemInfo(yyOrderInfo.getId()); List<YyOrderItemInfo> yyOrderItemInfoList = yyOrderItemInfoMapper.queryOrderItemInfo(yyOrderInfo.getId());
if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)) { if (CollectionUtils.isNotEmpty(yyOrderItemInfoList)) {
DdpcxxReqBO ddpcxxReqBO = transitionReadData(yyOrderInfo, yyOrderItemInfoList, deptEntity); DdpcxxReqBO ddpcxxReqBO = transitionReadData(yyOrderInfo, yyOrderItemInfoList, deptEntity);
@ -188,11 +199,19 @@ public class YyOrderServiceImpl implements OrderService {
} else { } else {
backMessage.add(String.format(message, yyOrderInfo.getCdlcode(), "订单明细信息丢失请删除重新读入")); backMessage.add(String.format(message, yyOrderInfo.getCdlcode(), "订单明细信息丢失请删除重新读入"));
} }
}else {
backMessage.add(String.format(message, yyOrderInfo.getCdlcode(), "订单正在生成发票,请稍后再试"));
log.info("订单正在生成发票,请稍后再试");
}
} catch (Exception e) { } catch (Exception e) {
log.error("保存发票异常{}", e); log.error("保存发票异常{}", e);
String format = String.format(message, yyOrderInfo.getCdlcode(), "生成发票异常请联系管理员"); String format = String.format(message, yyOrderInfo.getCdlcode(), "生成发票异常请联系管理员");
backMessage.add(format); backMessage.add(format);
}finally {
if (locked) {
lock.unlock();
}
} }
} }
@ -392,6 +411,14 @@ public class YyOrderServiceImpl implements OrderService {
String invoiceAmount = ConfigureConstant.STRING_0; String invoiceAmount = ConfigureConstant.STRING_0;
String taxAmount = ConfigureConstant.STRING_0; String taxAmount = ConfigureConstant.STRING_0;
boolean isZk = yyOrderItemInfoList.size()>ConfigureConstant.INT_1;
String xmmc = yyOrderItemInfoList.get(ConfigureConstant.INT_0).getCinvname();
if (isZk){
List<YyOrderItemInfo> collect = yyOrderItemInfoList.stream().filter(item -> DecimalCalculateUtil.stringCompare(item.getIsum(), ConfigureConstant.STRING_0) > ConfigureConstant.INT_0).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)){
xmmc = collect.get(ConfigureConstant.INT_0).getCinvname();
}
}
//发票明细信息 //发票明细信息
List<DdmxxxBO> ddmxxxBOList = new ArrayList<>(); List<DdmxxxBO> ddmxxxBOList = new ArrayList<>();
int index = ConfigureConstant.INT_0; int index = ConfigureConstant.INT_0;
@ -401,12 +428,9 @@ public class YyOrderServiceImpl implements OrderService {
ddmxxxBO.setXMMC(yyOrderItemInfo.getCinvname()); ddmxxxBO.setXMMC(yyOrderItemInfo.getCinvname());
ddmxxxBO.setGGXH(yyOrderItemInfo.getCinvstd()); ddmxxxBO.setGGXH(yyOrderItemInfo.getCinvstd());
ddmxxxBO.setDW(yyOrderItemInfo.getCcomunitname()); ddmxxxBO.setDW(yyOrderItemInfo.getCcomunitname());
String sl = DecimalCalculateUtil.dynamicDecimalFormatToStringWithoutZero(yyOrderItemInfo.getIquantity(), yyOrderInfo.getCvouchtype(), taxEquipmentInfo.getQdfwlx());
ddmxxxBO.setSPSL(sl);
ddmxxxBO.setJE(new BigDecimal(yyOrderItemInfo.getIsum()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setJE(new BigDecimal(yyOrderItemInfo.getIsum()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString());
ddmxxxBO.setSL(new BigDecimal(yyOrderItemInfo.getItaxrate()).divide(new BigDecimal(ConfigureConstant.STRING_100)).toPlainString()); ddmxxxBO.setSL(new BigDecimal(yyOrderItemInfo.getItaxrate()).divide(new BigDecimal(ConfigureConstant.STRING_100)).toPlainString());
ddmxxxBO.setSE(new BigDecimal(yyOrderItemInfo.getItax()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString()); ddmxxxBO.setSE(new BigDecimal(yyOrderItemInfo.getItax()).setScale(ConfigureConstant.INT_2, RoundingMode.HALF_UP).toPlainString());
ddmxxxBO.setDJ(getDynamicLengthDecimal(ddmxxxBO.getJE(), ddmxxxBO.getSPSL()));
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0); ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_0);
ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1); ddmxxxBO.setHSBZ(ConfigureConstant.STRING_1);
ddmxxxBO.setBYZD1(yyOrderItemInfo.getIunitprice()); ddmxxxBO.setBYZD1(yyOrderItemInfo.getIunitprice());
@ -415,8 +439,28 @@ public class YyOrderServiceImpl implements OrderService {
invoiceAmount = DecimalCalculateUtil.bigDecimalAdd(invoiceAmount, yyOrderItemInfo.getIsum(), ConfigureConstant.INT_2); invoiceAmount = DecimalCalculateUtil.bigDecimalAdd(invoiceAmount, yyOrderItemInfo.getIsum(), ConfigureConstant.INT_2);
taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, yyOrderItemInfo.getItax(), ConfigureConstant.INT_2); taxAmount = DecimalCalculateUtil.bigDecimalAdd(taxAmount, yyOrderItemInfo.getItax(), ConfigureConstant.INT_2);
//添加则扣行判断
if (isZk){
ddmxxxBO.setXH(ConfigureConstant.STRING_1);
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_2);
if (StringUtils.isNotBlank(ddmxxxBO.getJE()) && DecimalCalculateUtil.stringCompare(ddmxxxBO.getJE(), ConfigureConstant.STRING_0) < ConfigureConstant.INT_0){
ddmxxxBO.setXH(ConfigureConstant.STRING_2);
ddmxxxBO.setFPHXZ(ConfigureConstant.STRING_1);
ddmxxxBO.setXMMC(xmmc);
}
}
//非折扣行计算单价和数量
if(StringUtils.isNotBlank(ddmxxxBO.getJE()) && DecimalCalculateUtil.stringCompare(ddmxxxBO.getJE(), ConfigureConstant.STRING_0) > ConfigureConstant.INT_0){
String sl = DecimalCalculateUtil.dynamicDecimalFormatToStringWithoutZero(yyOrderItemInfo.getIquantity(), yyOrderInfo.getCvouchtype(), taxEquipmentInfo.getQdfwlx());
ddmxxxBO.setSPSL(sl);
ddmxxxBO.setDJ(getDynamicLengthDecimal(ddmxxxBO.getJE(), ddmxxxBO.getSPSL()));
}
ddmxxxBOList.add(ddmxxxBO); ddmxxxBOList.add(ddmxxxBO);
} }
if (isZk){
ddmxxxBOList.sort(Comparator.comparing(DdmxxxBO::getXH));
}
//金额、税额、价税合计 //金额、税额、价税合计
ddtxxBO.setHJSE(taxAmount); ddtxxBO.setHJSE(taxAmount);
ddtxxBO.setHJJE(DecimalCalculateUtil.bigDecimalSub(invoiceAmount, taxAmount, ConfigureConstant.INT_2)); ddtxxBO.setHJJE(DecimalCalculateUtil.bigDecimalSub(invoiceAmount, taxAmount, ConfigureConstant.INT_2));

Loading…
Cancel
Save