销售订单修订-物料增行调整
This commit is contained in:
parent
5a11c77417
commit
0fafc2b8c4
|
@ -1,6 +1,5 @@
|
|||
package nccloud.api.impl.so.m30;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import nc.bd.itf.tools.BFPubTools;
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
|
@ -22,7 +21,6 @@ import nc.vo.pubapp.AppContext;
|
|||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
import nc.vo.pubapp.pflow.PfUserObject;
|
||||
import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule;
|
||||
import nc.vo.scmpub.fill.pricemny.INumPriceMnyCalculator;
|
||||
import nc.vo.scmpub.res.billtype.SOBillType;
|
||||
import nc.vo.scmpub.util.StringUtil;
|
||||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
|
@ -37,13 +35,13 @@ import nc.vo.so.pub.keyvalue.VOKeyValue;
|
|||
import nc.vo.so.pub.util.AggVOUtil;
|
||||
import nc.vo.so.pub.util.SOCurrencyUtil;
|
||||
import nccloud.api.impl.so.m30.check.SaleOrderValidator;
|
||||
import nccloud.api.impl.so.m30.fill.SaleOrderNPriceMnyCal;
|
||||
import nccloud.api.impl.so.m30.fill.SaleOrderSaveFillValue;
|
||||
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 java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
|
@ -300,12 +298,12 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
updateFields(vo, bipVo);
|
||||
// 设置新增的物料行
|
||||
if (paramList != null && !paramList.isEmpty()) {
|
||||
// addBvo(combinBillVOs, paramList);
|
||||
addBvo(combinBillVOs, paramList);
|
||||
}
|
||||
}
|
||||
// 联动计算
|
||||
INumPriceMnyCalculator cal = new SaleOrderNPriceMnyCal<SaleOrderVO>(combinBillVOs);
|
||||
cal.calculate();
|
||||
// INumPriceMnyCalculator cal = new SaleOrderNPriceMnyCal<SaleOrderVO>(combinBillVOs);
|
||||
// cal.calculate();
|
||||
// 保存
|
||||
ISaleOrderScriptMaintain maintainsrv =
|
||||
NCLocator.getInstance().lookup(ISaleOrderScriptMaintain.class);
|
||||
|
@ -437,7 +435,8 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
targetBVO.setNorigtaxmny(sourceBVO.getNorigtaxmny());
|
||||
targetBVO.setCmaterialvid(sourceBVO.getCmaterialvid());
|
||||
// 折本汇率
|
||||
targetBVO.setNexchangerate(sourceBVO.getNexchangerate());
|
||||
UFDouble nexchangerate = getUFDouble_NullAsOne(sourceBVO.getNexchangerate());
|
||||
targetBVO.setNexchangerate(nexchangerate);
|
||||
// 物料编码
|
||||
String cmaterialvid = sourceBVO.getCmaterialvid();
|
||||
// 物料关联字段赋值
|
||||
|
@ -542,6 +541,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
"";
|
||||
|
||||
String o_pk_project = (String) new BaseDAO().executeQuery(sql, new ColumnProcessor());
|
||||
// ˰Âë
|
||||
bVO.setAttributeValue("ctaxcodeid", o_pk_project);
|
||||
} catch (BusinessException e) {
|
||||
NCCForUAPLogger.debug("APISaleOrderMaitainImpl-setMaterl:" + e.getMessage());
|
||||
|
@ -568,9 +568,13 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
/**
|
||||
* 修订销售订单的时候新增销售订单物料行的数据
|
||||
*/
|
||||
private void addBvo(SaleOrderVO[] combinBillVOs, List<Map<String, Object>> paramList) {
|
||||
private void addBvo(SaleOrderVO[] oldVOs, List<Map<String, Object>> paramList) {
|
||||
try {
|
||||
for (SaleOrderVO vo : combinBillVOs) {
|
||||
SaleOrderVO[] copyVOs = new SaleOrderVO[oldVOs.length];
|
||||
for (int i = 0; i < oldVOs.length; i++) {
|
||||
copyVOs[i] = (SaleOrderVO) oldVOs[i].clone();
|
||||
}
|
||||
for (SaleOrderVO vo : copyVOs) {
|
||||
SaleOrderHVO hvo = vo.getParentVO();
|
||||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||||
|
@ -608,7 +612,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
newBvo.setAttributeValue("csendcountryid", "CN");
|
||||
|
||||
newBvo.setAttributeValue("fbuysellflag", 1);
|
||||
UFDouble nexchangerateBip = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nexchangerate"));
|
||||
UFDouble nexchangerateBip = getUFDouble_NullAsOne(bodydata.get("nexchangerate"));
|
||||
newBvo.setNexchangerate(nexchangerateBip);
|
||||
// 设置物料的关联字段的值
|
||||
newBvo.setCmaterialvid(bodydata.get("cmaterialvid") + "");
|
||||
|
@ -695,10 +699,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
UFDouble Nprice = nqtorigtaxprice.div(dVqtunitrate).div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
||||
newBvo.setNprice(Nprice.setScale(4, 4));
|
||||
//,ntaxnetprice --主本币含税净价
|
||||
//£¬nnetprice --Ö÷±¾±ÒÎÞ˰¾»¼Û
|
||||
newBvo.setNtaxnetprice(nqtorigtaxprice.div(dVqtunitrate).multiply(nexchangerate).setScale(4, 4));
|
||||
UFDouble Nnetprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).div(dVqtunitrate);
|
||||
newBvo.setNnetprice(Nnetprice.multiply(nexchangerate).setScale(4, 4));
|
||||
//£¬nnetprice --Ö÷±¾±ÒÎÞ˰¾»¼Û
|
||||
UFDouble nnetprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).div(dVqtunitrate);
|
||||
nnetprice = nnetprice.multiply(nexchangerate).setScale(4, 4);
|
||||
newBvo.setNnetprice(nnetprice);
|
||||
// nmny --本币无税金额
|
||||
// ntaxmny-- 本币价税合计
|
||||
newBvo.setNmny(Currency.getFormaUfValue(zbbz, norigmny.multiply(nexchangerate)));
|
||||
|
@ -714,15 +719,33 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||||
vo.setChildrenVO(array);
|
||||
}
|
||||
|
||||
// 填充默认值
|
||||
new SaleOrderSaveFillValue().setDefValue(combinBillVOs);
|
||||
for (SaleOrderVO combinBillVO : combinBillVOs) {
|
||||
new SaleOrderSaveFillValue().setDefValue(copyVOs);
|
||||
SaleOrderBVO newBvo = null;
|
||||
for (SaleOrderVO copyVO : copyVOs) {
|
||||
for (SaleOrderBVO saleOrderBVO : copyVO.getChildrenVO()) {
|
||||
if (VOStatus.NEW == saleOrderBVO.getStatus()) {
|
||||
newBvo = (SaleOrderBVO) saleOrderBVO.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newBvo != null) {
|
||||
for (SaleOrderVO oldVO : oldVOs) {
|
||||
SaleOrderBVO[] bvos = oldVO.getChildrenVO();
|
||||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||||
bvoList.add(newBvo);
|
||||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||||
oldVO.setChildrenVO(array);
|
||||
}
|
||||
}
|
||||
/*for (SaleOrderVO combinBillVO : copyVOs) {
|
||||
for (SaleOrderBVO saleOrderBVO : combinBillVO.getChildrenVO()) {
|
||||
// 将实体对象转换为JSON字符串
|
||||
String jsonString = JSON.toJSONString(saleOrderBVO);
|
||||
NCCForUAPLogger.debug("jsonString:" + jsonString);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
} catch (Exception e) {
|
||||
NCCForUAPLogger.debug("APISaleOrderMaitainImpl-addBvo:" + e.getMessage());
|
||||
|
@ -730,4 +753,15 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
}
|
||||
}
|
||||
|
||||
private UFDouble getUFDouble_NullAsOne(Object value) {
|
||||
if ((value == null) || (value.toString().trim().equals("")) || (value.toString().trim().equals("~")))
|
||||
return UFDouble.ONE_DBL;
|
||||
if ((value instanceof UFDouble))
|
||||
return (UFDouble) value;
|
||||
if ((value instanceof BigDecimal)) {
|
||||
return new UFDouble((BigDecimal) value);
|
||||
}
|
||||
return new UFDouble(value.toString().trim());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue