销售订单折本汇率保留2位小数,增加订单类型和客户的变更逻辑,新增物料行的项目增加判空逻辑
This commit is contained in:
parent
c787a28f45
commit
7f472d5694
|
@ -14,6 +14,7 @@ import nc.pubitf.so.m30.api.ISaleOrderQueryAPI;
|
|||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pub.VOStatus;
|
||||
import nc.vo.pub.billtype.BilltypeVO;
|
||||
import nc.vo.pub.lang.UFBoolean;
|
||||
import nc.vo.pub.lang.UFDate;
|
||||
import nc.vo.pub.lang.UFDouble;
|
||||
|
@ -40,6 +41,7 @@ import nccloud.api.so.m30.IAPISaleOrderMaitain;
|
|||
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||||
import nccloud.dto.scmpub.pflow.SCMCloudPFlowContext;
|
||||
import nccloud.pubitf.scmpub.commit.service.IBatchRunScriptService;
|
||||
import nccloud.riart.pubimpl.billtype.BilltypeServiceImpl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
@ -74,9 +76,9 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
if (o1 == null) {
|
||||
throw new BusinessException("表体币种不能为空或币种不存在");
|
||||
}
|
||||
String csettleorgid = bvos[0].getCsettleorgid();
|
||||
// String csettleorgid = bvos[0].getCsettleorgid();
|
||||
String ccurrencyorgid = o1.toString();
|
||||
UFDouble exchangerate = SOCurrencyUtil.getInCurrencyRateByOrg(csettleorgid, BFPubTools.getString_TrimAsNull(o), ccurrencyorgid, dbilldate);
|
||||
// UFDouble exchangerate = SOCurrencyUtil.getInCurrencyRateByOrg(csettleorgid, BFPubTools.getString_TrimAsNull(o), ccurrencyorgid, dbilldate);
|
||||
for (SaleOrderBVO bvo : bvos) {
|
||||
bvo.setCcurrencyid(BFPubTools.getString_TrimAsNull(o1));
|
||||
if (!BFPubTools.getString_TrimAsNull(o).equals(ccurrencyorgid)) {
|
||||
|
@ -84,7 +86,9 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
} else {
|
||||
// bvo.setNexchangerate(UFDouble.ONE_DBL);
|
||||
}
|
||||
|
||||
// 折本汇率判空及保留小数位数
|
||||
UFDouble exchangerate1 = getUFDouble_NullAsOne(bvo.getNexchangerate()).setScale(2, UFDouble.ROUND_HALF_UP);
|
||||
bvo.setNexchangerate(exchangerate1);
|
||||
}
|
||||
|
||||
// bvo.setNexchangerate(rateReturnObject.getRate());
|
||||
|
@ -293,16 +297,28 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
}
|
||||
}
|
||||
for (SaleOrderVO vo : combinBillVOs) {
|
||||
SaleOrderHVO hvo = vo.getParentVO();
|
||||
SaleOrderHVO originHvo = null;
|
||||
for (SaleOrderVO originVo : originVos) {
|
||||
if (hvo.getCsaleorderid().equals(originVo.getParentVO().getCsaleorderid())) {
|
||||
originHvo = originVo.getParentVO();
|
||||
}
|
||||
}
|
||||
String new_ctrantypeid = hvo.getCtrantypeid();
|
||||
boolean isChangedTranType = false;// 订单类型不修改
|
||||
if (originHvo != null && new_ctrantypeid != null && !new_ctrantypeid.equals(originHvo.getCtrantypeid())) {
|
||||
isChangedTranType = true;
|
||||
}
|
||||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||||
// 判断是否存在新增的子表
|
||||
boolean hasNewStatus = Arrays.stream(bvos)
|
||||
.anyMatch(bvo -> bvo.getStatus() == VOStatus.NEW);
|
||||
// 新增子表的情况下不校验是否存在下游
|
||||
if (!hasNewStatus) {
|
||||
// 新增子表或改订单类型的情况下不校验是否存在下游
|
||||
if (!hasNewStatus && !isChangedTranType) {
|
||||
String countSql = "SELECT count(1) FROM so_saleinvoice_b a" +
|
||||
" LEFT JOIN so_saleinvoice b ON a.csaleinvoiceid = b.csaleinvoiceid" +
|
||||
" WHERE b.fopposeflag = 0 AND nvl(b.dr, 0) = 0 and csrcid = '[csrcid]' ";
|
||||
countSql = countSql.replace("[csrcid]", vo.getParentVO().getCsaleorderid());
|
||||
countSql = countSql.replace("[csrcid]", hvo.getCsaleorderid());
|
||||
Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor());
|
||||
if (num > 0) {
|
||||
// fopposeflag 对冲标记 0=正常 1=已被对冲 2=对冲生成
|
||||
|
@ -344,7 +360,14 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
String csaleorderid = orderHVO.getCsaleorderid();
|
||||
String cdeptvid = orderHVO.getCdeptvid();
|
||||
String cemployeeid = orderHVO.getCemployeeid();
|
||||
// 开票客户
|
||||
String cinvoicecustid = orderHVO.getCinvoicecustid();
|
||||
// 客户
|
||||
String ccustomerid = orderHVO.getCcustomerid();
|
||||
// 订单类型
|
||||
// String ctrantypeid = orderHVO.getAttributeValue("ctrantypeid") + "";
|
||||
String vtrantypecode = orderHVO.getVtrantypecode();
|
||||
NCCForUAPLogger.debug("setOtherId-ccustomerid:" + ccustomerid + ",vtrantypecode:" + vtrantypecode);
|
||||
try {
|
||||
String sql = "";
|
||||
// 部门
|
||||
|
@ -377,10 +400,10 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
}
|
||||
// 开票客户
|
||||
if (cinvoicecustid != null && !cinvoicecustid.isEmpty()) {
|
||||
sql = " select pk_customer from bd_customer where code = '[code]' ";
|
||||
sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' ";
|
||||
sql = sql.replace("[code]", cinvoicecustid);
|
||||
Object invCustObj = new BaseDAO().executeQuery(sql, new ColumnProcessor("pk_customer"));
|
||||
NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-invCustObj:" + invCustObj);
|
||||
NCCForUAPLogger.debug("setOtherId-invCustObj:" + invCustObj);
|
||||
if (invCustObj != null) {
|
||||
String id = BFPubTools.getString_TrimAsNull(invCustObj);
|
||||
if (!id.isEmpty()) {
|
||||
|
@ -388,6 +411,28 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
}
|
||||
}
|
||||
}
|
||||
// 客户
|
||||
if (ccustomerid != null && !ccustomerid.isEmpty()) {
|
||||
sql = " select pk_customer from bd_customer where nvl(dr,0) = 0 and code = '[code]' ";
|
||||
sql = sql.replace("[code]", ccustomerid);
|
||||
Object custObj = new BaseDAO().executeQuery(sql, new ColumnProcessor("pk_customer"));
|
||||
NCCForUAPLogger.debug("setOtherId-custObj:" + custObj);
|
||||
if (custObj != null) {
|
||||
String id = BFPubTools.getString_TrimAsNull(custObj);
|
||||
if (!id.isEmpty()) {
|
||||
orderHVO.setCcustomerid(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 交易类型
|
||||
if (vtrantypecode != null && !vtrantypecode.isEmpty()) {
|
||||
BilltypeServiceImpl billtypeService = new BilltypeServiceImpl();
|
||||
BilltypeVO billtype = billtypeService.getBilltype(vtrantypecode);
|
||||
if (billtype != null && billtype.getPk_billtypeid() != null) {
|
||||
NCCForUAPLogger.debug("setOtherId-pk_billtypeid:" + billtype.getPk_billtypeid());
|
||||
orderHVO.setCtrantypeid(billtype.getPk_billtypeid());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setOtherId-exp:" + e.getMessage());
|
||||
throw new RuntimeException(e);
|
||||
|
@ -415,6 +460,20 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
if (cinvoicecustid != null && !cinvoicecustid.isEmpty()) {
|
||||
targetHVO.setCinvoicecustid(cinvoicecustid);
|
||||
}
|
||||
String ccustomerid = sourceHVO.getCcustomerid();
|
||||
if (ccustomerid != null && !ccustomerid.isEmpty()) {
|
||||
targetHVO.setCcustomerid(ccustomerid);
|
||||
}
|
||||
// 订单类型id
|
||||
String ctrantypeid = sourceHVO.getCtrantypeid();
|
||||
if (ctrantypeid != null && !ctrantypeid.isEmpty()) {
|
||||
targetHVO.setCtrantypeid(ctrantypeid);
|
||||
}
|
||||
// 订单类型编码
|
||||
String vtrantypecode = sourceHVO.getVtrantypecode();
|
||||
if (vtrantypecode != null && !vtrantypecode.isEmpty()) {
|
||||
targetHVO.setVtrantypecode(vtrantypecode);
|
||||
}
|
||||
|
||||
// 更新 SaleOrderBVO 字段
|
||||
SaleOrderBVO[] targetBVOs = target.getChildrenVO();
|
||||
|
@ -614,8 +673,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
newBvo.setStatus(VOStatus.NEW);
|
||||
newBvo.setAttributeValue("pk_group", pk_group);
|
||||
String cprojectid = bodydata.get("cprojectid") + "";
|
||||
if (oneBvo != null) {
|
||||
if (oneBvo != null && oneBvo.getCprojectid() != null && !"".equals(oneBvo.getCprojectid())) {
|
||||
cprojectid = oneBvo.getCprojectid();
|
||||
} else {
|
||||
String sql = " select pk_project from bd_project where project_code='" + cprojectid + "' and nvl(dr,0)=0 ";
|
||||
cprojectid = (String) new BaseDAO().executeQuery(sql, new ColumnProcessor());
|
||||
}
|
||||
newBvo.setAttributeValue("cprojectid", cprojectid);
|
||||
// newBvo.setAttributeValue("ctrafficorgvid", pkOrg);
|
||||
|
|
Loading…
Reference in New Issue