销售订单修订-是否赠品取值调整和增行逻辑调整
This commit is contained in:
parent
0bf5ded6c9
commit
1b2f6d5d9c
|
@ -282,16 +282,18 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
String primaryKey = hvo.getCsaleorderid();
|
String primaryKey = hvo.getCsaleorderid();
|
||||||
SaleOrderVO bipVo = vosMap.get(primaryKey);
|
SaleOrderVO bipVo = vosMap.get(primaryKey);
|
||||||
// 创建一个Set来存储vos中多的csaleorderbid
|
// 创建一个Set来存储vos中多的csaleorderbid
|
||||||
Set<String> delBids = findOtherBids(bipVo.getChildrenVO(), vo.getChildrenVO());
|
// Set<String> delBids = findOtherBids(bipVo.getChildrenVO(), vo.getChildrenVO());
|
||||||
// 设置单据状态
|
// 设置单据状态
|
||||||
hvo.setStatus(VOStatus.UPDATED);
|
hvo.setStatus(VOStatus.UPDATED);
|
||||||
// 比较combinBillVOs中的BVO和vos中的BVO
|
// 比较combinBillVOs中的BVO和vos中的BVO
|
||||||
for (SaleOrderBVO bvo : vo.getChildrenVO()) {
|
for (SaleOrderBVO bvo : vo.getChildrenVO()) {
|
||||||
bvo.setStatus(VOStatus.UPDATED);
|
bvo.setStatus(VOStatus.UPDATED);
|
||||||
// 设置删除的物料行的状态
|
// 设置删除的物料行的状态
|
||||||
if (!delBids.isEmpty() && delBids.contains(bvo.getCsaleorderbid())) {
|
for (SaleOrderBVO bipBVO : bipVo.getChildrenVO()) {
|
||||||
bvo.setStatus(VOStatus.DELETED);
|
if (bvo.getCsaleorderbid().equals(bipBVO.getCsaleorderbid()) && (1 == bipBVO.getDr())) {
|
||||||
NCCForUAPLogger.debug("findDeletedBids:" + VOStatus.DELETED + ",csaleorderbid = " + bvo.getCsaleorderbid());
|
bvo.setStatus(VOStatus.DELETED);
|
||||||
|
NCCForUAPLogger.debug("findDeletedBids:" + VOStatus.DELETED + ",csaleorderbid = " + bvo.getCsaleorderbid());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 更新 combinBillVO 中的字段为 vos 中的值
|
// 更新 combinBillVO 中的字段为 vos 中的值
|
||||||
|
@ -434,6 +436,8 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
// 价税合计
|
// 价税合计
|
||||||
targetBVO.setNorigtaxmny(sourceBVO.getNorigtaxmny());
|
targetBVO.setNorigtaxmny(sourceBVO.getNorigtaxmny());
|
||||||
targetBVO.setCmaterialvid(sourceBVO.getCmaterialvid());
|
targetBVO.setCmaterialvid(sourceBVO.getCmaterialvid());
|
||||||
|
// 是否赠品
|
||||||
|
targetBVO.setBlargessflag(sourceBVO.getBlargessflag());
|
||||||
// 折本汇率
|
// 折本汇率
|
||||||
UFDouble nexchangerate = getUFDouble_NullAsOne(sourceBVO.getNexchangerate());
|
UFDouble nexchangerate = getUFDouble_NullAsOne(sourceBVO.getNexchangerate());
|
||||||
targetBVO.setNexchangerate(nexchangerate);
|
targetBVO.setNexchangerate(nexchangerate);
|
||||||
|
@ -553,7 +557,10 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
private Set<String> findOtherBids(SaleOrderBVO[] bipBVOs, SaleOrderBVO[] nccBVOs) {
|
private Set<String> findOtherBids(SaleOrderBVO[] bipBVOs, SaleOrderBVO[] nccBVOs) {
|
||||||
Set<String> bipBids = new HashSet<>();
|
Set<String> bipBids = new HashSet<>();
|
||||||
for (SaleOrderBVO bvo : bipBVOs) {
|
for (SaleOrderBVO bvo : bipBVOs) {
|
||||||
bipBids.add(bvo.getCsaleorderbid());
|
String csaleorderbid = bvo.getCsaleorderbid();
|
||||||
|
if (csaleorderbid != null && !csaleorderbid.isEmpty()) {
|
||||||
|
bipBids.add(csaleorderbid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<String> deletedBids = new HashSet<>();
|
Set<String> deletedBids = new HashSet<>();
|
||||||
|
@ -574,169 +581,184 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
for (int i = 0; i < oldVOs.length; i++) {
|
for (int i = 0; i < oldVOs.length; i++) {
|
||||||
copyVOs[i] = (SaleOrderVO) oldVOs[i].clone();
|
copyVOs[i] = (SaleOrderVO) oldVOs[i].clone();
|
||||||
}
|
}
|
||||||
|
// 将 vos 中的元素按主键存储在 Map 中
|
||||||
|
Map<String, SaleOrderVO> vosMap = new HashMap<>();
|
||||||
for (SaleOrderVO vo : copyVOs) {
|
for (SaleOrderVO vo : copyVOs) {
|
||||||
|
vosMap.put(vo.getParentVO().getCsaleorderid(), vo);
|
||||||
|
}
|
||||||
|
for (Map<String, Object> objectMap : paramList) {
|
||||||
|
Map<String, Object> headdata = (Map<String, Object>) objectMap.get("so_saleorder");
|
||||||
|
String primaryKey = headdata.getOrDefault("csaleorderid", "") + "";
|
||||||
|
SaleOrderVO vo = vosMap.get(primaryKey);
|
||||||
SaleOrderHVO hvo = vo.getParentVO();
|
SaleOrderHVO hvo = vo.getParentVO();
|
||||||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
|
||||||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
|
||||||
String csaleorderid = hvo.getCsaleorderid();
|
String csaleorderid = hvo.getCsaleorderid();
|
||||||
String ybpk = hvo.getCorigcurrencyid();
|
String ybpk = hvo.getCorigcurrencyid();
|
||||||
Map<String, Object> objectMap = Collections.emptyMap();
|
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||||||
for (Map<String, Object> map : paramList) {
|
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||||||
objectMap = (Map<String, Object>) map.get(csaleorderid);
|
|
||||||
}
|
|
||||||
if (objectMap != null && !objectMap.isEmpty()) {
|
|
||||||
List<Object> bodyArr = (List<Object>) objectMap.get("so_saleorder_b");
|
|
||||||
for (Object body : bodyArr) {
|
|
||||||
Map<String, Object> bodydata = (Map<String, Object>) body;
|
|
||||||
if ("add".equals(bodydata.get("status"))) {
|
|
||||||
String pkOrgV = hvo.getPk_org_v();
|
|
||||||
String pkOrg = hvo.getPk_org();
|
|
||||||
String pk_group = AppContext.getInstance().getPkGroup();
|
|
||||||
// 新数据的实体
|
|
||||||
// SaleOrderBVO newBvo = (SaleOrderBVO) bvos[0].clone();
|
|
||||||
SaleOrderBVO newBvo = new SaleOrderBVO();
|
|
||||||
newBvo.setStatus(VOStatus.NEW);
|
|
||||||
newBvo.setAttributeValue("pk_group", pk_group);
|
|
||||||
newBvo.setAttributeValue("cprojectid", bodydata.get("cprojectid"));
|
|
||||||
// newBvo.setAttributeValue("ctrafficorgvid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("csendstockorgvid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("csendstordocid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("csendstockorgid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("carorgid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("carorgvid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("csettleorgid", pkOrg);
|
|
||||||
// newBvo.setAttributeValue("csettleorgvid", pkOrg);
|
|
||||||
|
|
||||||
newBvo.setAttributeValue("ctaxcountryid", "CN");
|
List<Object> bodyArr = (List<Object>) objectMap.get("so_saleorder_b");
|
||||||
newBvo.setAttributeValue("crececountryid", "CN");
|
for (Object body : bodyArr) {
|
||||||
newBvo.setAttributeValue("csendcountryid", "CN");
|
Map<String, Object> bodydata = (Map<String, Object>) body;
|
||||||
|
if ("add".equals(bodydata.get("status"))) {
|
||||||
|
String pkOrgV = hvo.getPk_org_v();
|
||||||
|
String pkOrg = hvo.getPk_org();
|
||||||
|
String pk_group = AppContext.getInstance().getPkGroup();
|
||||||
|
// 新数据的实体
|
||||||
|
// SaleOrderBVO newBvo = (SaleOrderBVO) bvos[0].clone();
|
||||||
|
SaleOrderBVO newBvo = new SaleOrderBVO();
|
||||||
|
newBvo.setStatus(VOStatus.NEW);
|
||||||
|
newBvo.setAttributeValue("pk_group", pk_group);
|
||||||
|
newBvo.setAttributeValue("cprojectid", bodydata.get("cprojectid"));
|
||||||
|
// newBvo.setAttributeValue("ctrafficorgvid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("csendstockorgvid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("csendstordocid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("csendstockorgid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("carorgid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("carorgvid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("csettleorgid", pkOrg);
|
||||||
|
// newBvo.setAttributeValue("csettleorgvid", pkOrg);
|
||||||
|
|
||||||
newBvo.setAttributeValue("fbuysellflag", 1);
|
newBvo.setAttributeValue("ctaxcountryid", "CN");
|
||||||
UFDouble nexchangerateBip = getUFDouble_NullAsOne(bodydata.get("nexchangerate"));
|
newBvo.setAttributeValue("crececountryid", "CN");
|
||||||
newBvo.setNexchangerate(nexchangerateBip);
|
newBvo.setAttributeValue("csendcountryid", "CN");
|
||||||
// 设置物料的关联字段的值
|
|
||||||
newBvo.setCmaterialvid(bodydata.get("cmaterialvid") + "");
|
|
||||||
UFDouble ntaxrate = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxrate"));
|
|
||||||
UFDouble nnum = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nnum"));
|
|
||||||
newBvo.setAttributeValue("ntaxrate", ntaxrate);
|
|
||||||
newBvo.setAttributeValue("nnum", nnum);
|
|
||||||
newBvo.setVbdef11(bodydata.getOrDefault("vbdef11", "") + "");
|
|
||||||
|
|
||||||
UFDouble norigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigtaxprice"));
|
newBvo.setAttributeValue("fbuysellflag", 1);
|
||||||
newBvo.setAttributeValue("norigtaxprice", norigtaxprice);
|
UFDouble nexchangerateBip = getUFDouble_NullAsOne(bodydata.get("nexchangerate"));
|
||||||
UFDouble norigprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigprice"));
|
newBvo.setNexchangerate(nexchangerateBip);
|
||||||
newBvo.setAttributeValue("norigprice", norigprice);
|
// 设置物料的关联字段的值
|
||||||
setMaterl(newBvo);
|
newBvo.setCmaterialvid(bodydata.get("cmaterialvid") + "");
|
||||||
newBvo.setCsaleorderbid(null);
|
UFDouble ntaxrate = BFPubTools.getUFDouble_NullAsZero(bodydata.get("ntaxrate"));
|
||||||
|
UFDouble nnum = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nnum"));
|
||||||
|
newBvo.setAttributeValue("ntaxrate", ntaxrate);
|
||||||
|
newBvo.setAttributeValue("nnum", nnum);
|
||||||
|
newBvo.setVbdef11(bodydata.getOrDefault("vbdef11", "") + "");
|
||||||
|
|
||||||
newBvo.setCcurrencyid(ybpk);
|
UFDouble norigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigtaxprice"));
|
||||||
String zbbz = newBvo.getCcurrencyid();
|
newBvo.setAttributeValue("norigtaxprice", norigtaxprice);
|
||||||
|
UFDouble norigprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("norigprice"));
|
||||||
|
newBvo.setAttributeValue("norigprice", norigprice);
|
||||||
|
setMaterl(newBvo);
|
||||||
|
newBvo.setCsaleorderbid(null);
|
||||||
|
|
||||||
newBvo.setFtaxtypeflag(1);
|
newBvo.setCcurrencyid(ybpk);
|
||||||
|
String zbbz = newBvo.getCcurrencyid();
|
||||||
|
|
||||||
// 折本汇率
|
newBvo.setFtaxtypeflag(1);
|
||||||
UFDouble nexchangerate = newBvo.getNexchangerate();
|
|
||||||
// 含税单价
|
|
||||||
UFDouble nqtorigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorigtaxprice"));
|
|
||||||
newBvo.setAttributeValue("nqtorigtaxprice", nqtorigtaxprice);
|
|
||||||
// 无税单价
|
|
||||||
UFDouble nqtorigprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100)));
|
|
||||||
// 价税合计
|
|
||||||
UFDouble norigtaxmny = nqtorigtaxprice.multiply(newBvo.getNqtunitnum()).setScale(2, 4);
|
|
||||||
newBvo.setNorigtaxmny(norigtaxmny);
|
|
||||||
// 无税金额
|
|
||||||
UFDouble norigmny = nqtorigprice.multiply(newBvo.getNqtunitnum());
|
|
||||||
|
|
||||||
newBvo.setNorigmny(Currency.getFormaUfValue(ybpk, norigmny));
|
// 折本汇率
|
||||||
// 税额
|
UFDouble nexchangerate = newBvo.getNexchangerate();
|
||||||
newBvo.setNqtorigprice(nqtorigprice.setScale(4, 4));
|
// 含税单价
|
||||||
|
UFDouble nqtorigtaxprice = BFPubTools.getUFDouble_NullAsZero(bodydata.get("nqtorigtaxprice"));
|
||||||
|
newBvo.setAttributeValue("nqtorigtaxprice", nqtorigtaxprice);
|
||||||
|
// 无税单价
|
||||||
|
UFDouble nqtorigprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100)));
|
||||||
|
// 价税合计
|
||||||
|
UFDouble norigtaxmny = nqtorigtaxprice.multiply(newBvo.getNqtunitnum()).setScale(2, 4);
|
||||||
|
newBvo.setNorigtaxmny(norigtaxmny);
|
||||||
|
// 无税金额
|
||||||
|
UFDouble norigmny = nqtorigprice.multiply(newBvo.getNqtunitnum());
|
||||||
|
|
||||||
// 无税本币金额单价
|
newBvo.setNorigmny(Currency.getFormaUfValue(ybpk, norigmny));
|
||||||
UFDouble taxspric = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100)));
|
// 税额
|
||||||
|
newBvo.setNqtorigprice(nqtorigprice.setScale(4, 4));
|
||||||
|
|
||||||
|
// 无税本币金额单价
|
||||||
|
UFDouble taxspric = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100)));
|
||||||
|
|
||||||
|
|
||||||
nqtorigprice = nqtorigprice.setScale(4, 4);
|
nqtorigprice = nqtorigprice.setScale(4, 4);
|
||||||
// nqtorigtaxnetprc--含税净价
|
// nqtorigtaxnetprc--含税净价
|
||||||
newBvo.setNqtorigtaxnetprc(nqtorigtaxprice);
|
newBvo.setNqtorigtaxnetprc(nqtorigtaxprice);
|
||||||
//,nqtorignetprice --无税净价
|
//,nqtorignetprice --无税净价
|
||||||
newBvo.setNqtorignetprice(nqtorigprice);
|
newBvo.setNqtorignetprice(nqtorigprice);
|
||||||
String Vqtunitrate = newBvo.getVqtunitrate();
|
String Vqtunitrate = newBvo.getVqtunitrate();
|
||||||
UFDouble dVqtunitrate = UFDouble.ONE_DBL;
|
UFDouble dVqtunitrate = UFDouble.ONE_DBL;
|
||||||
if (Vqtunitrate != null) {
|
if (Vqtunitrate != null) {
|
||||||
dVqtunitrate = BFPubTools.getUFDouble_NullAsZero(Vqtunitrate.split("/")[0]);
|
dVqtunitrate = BFPubTools.getUFDouble_NullAsZero(Vqtunitrate.split("/")[0]);
|
||||||
}
|
|
||||||
//,norigtaxprice --主含税单价
|
|
||||||
|
|
||||||
UFDouble wsje = taxspric.multiply(nexchangerate).multiply(newBvo.getNqtunitnum());
|
|
||||||
if (ybpk.equals(zbbz) && BFPubTools.getString_TrimAsNull(newBvo.getCqtunitid()).equals(BFPubTools.getString_TrimAsNull(newBvo.getCastunitid()))) {
|
|
||||||
wsje = taxspric.multiply(nexchangerate).multiply(newBvo.getNqtunitnum());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wsje = Currency.getFormaUfValue(zbbz, wsje);
|
|
||||||
// 本币无税金额
|
|
||||||
newBvo.setNorigtaxprice(nqtorigtaxprice.div(dVqtunitrate).setScale(4, 4));
|
|
||||||
//,norigprice --主无税单价
|
|
||||||
newBvo.setNorigprice(nqtorigprice.div(dVqtunitrate).setScale(4, 4));
|
|
||||||
//,norigtaxnetprice --主含税净价
|
|
||||||
newBvo.setNorigtaxnetprice(newBvo.getNorigtaxprice());
|
|
||||||
//,norignetprice --主无税净价
|
|
||||||
newBvo.setNorignetprice(newBvo.getNorigprice());
|
|
||||||
// ncaltaxmny --计税金额
|
|
||||||
|
|
||||||
// ,nqttaxprice --本币含税单价
|
|
||||||
newBvo.setNqttaxprice(nqtorigtaxprice.multiply(nexchangerate));
|
|
||||||
//,nqtprice --本币无税单价
|
|
||||||
UFDouble bbwsd = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
|
||||||
newBvo.setNqtprice(bbwsd.setScale(4, 4));
|
|
||||||
//, nqttaxnetprice --本币含税净价
|
|
||||||
newBvo.setNqttaxnetprice(nqtorigtaxprice.multiply(nexchangerate));
|
|
||||||
//,nqtnetprice --本币无税净价
|
|
||||||
UFDouble Nqtnetprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
|
||||||
newBvo.setNqtnetprice(Nqtnetprice.setScale(4, 4));
|
|
||||||
//,ntaxprice --主本币含税单价 , nprice --主本币无税单价
|
|
||||||
newBvo.setNtaxprice(nqtorigtaxprice.div(dVqtunitrate).multiply(nexchangerate).setScale(4, 4));
|
|
||||||
UFDouble Nprice = nqtorigtaxprice.div(dVqtunitrate).div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
|
||||||
newBvo.setNprice(Nprice.setScale(4, 4));
|
|
||||||
//,ntaxnetprice --主本币含税净价
|
|
||||||
newBvo.setNtaxnetprice(nqtorigtaxprice.div(dVqtunitrate).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)));
|
|
||||||
newBvo.setNtaxmny(nqtorigtaxprice.multiply(nexchangerate).multiply(newBvo.getNqtunitnum()).setScale(2, 4));
|
|
||||||
newBvo.setNcaltaxmny(wsje);
|
|
||||||
UFDouble ntax = norigtaxmny.multiply(nexchangerate).sub(wsje);
|
|
||||||
newBvo.setNtax(ntax.setScale(2, 4));
|
|
||||||
newBvo.setCrowno(bodydata.get("crowno") + "");
|
|
||||||
bvoList.add(newBvo);
|
|
||||||
}
|
}
|
||||||
|
//,norigtaxprice --主含税单价
|
||||||
|
|
||||||
|
UFDouble wsje = taxspric.multiply(nexchangerate).multiply(newBvo.getNqtunitnum());
|
||||||
|
if (ybpk.equals(zbbz) && BFPubTools.getString_TrimAsNull(newBvo.getCqtunitid()).equals(BFPubTools.getString_TrimAsNull(newBvo.getCastunitid()))) {
|
||||||
|
wsje = taxspric.multiply(nexchangerate).multiply(newBvo.getNqtunitnum());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wsje = Currency.getFormaUfValue(zbbz, wsje);
|
||||||
|
// 本币无税金额
|
||||||
|
newBvo.setNorigtaxprice(nqtorigtaxprice.div(dVqtunitrate).setScale(4, 4));
|
||||||
|
//,norigprice --主无税单价
|
||||||
|
newBvo.setNorigprice(nqtorigprice.div(dVqtunitrate).setScale(4, 4));
|
||||||
|
//,norigtaxnetprice --主含税净价
|
||||||
|
newBvo.setNorigtaxnetprice(newBvo.getNorigtaxprice());
|
||||||
|
//,norignetprice --主无税净价
|
||||||
|
newBvo.setNorignetprice(newBvo.getNorigprice());
|
||||||
|
// ncaltaxmny --计税金额
|
||||||
|
|
||||||
|
// ,nqttaxprice --本币含税单价
|
||||||
|
newBvo.setNqttaxprice(nqtorigtaxprice.multiply(nexchangerate));
|
||||||
|
//,nqtprice --本币无税单价
|
||||||
|
UFDouble bbwsd = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
||||||
|
newBvo.setNqtprice(bbwsd.setScale(4, 4));
|
||||||
|
//, nqttaxnetprice --本币含税净价
|
||||||
|
newBvo.setNqttaxnetprice(nqtorigtaxprice.multiply(nexchangerate));
|
||||||
|
//,nqtnetprice --本币无税净价
|
||||||
|
UFDouble Nqtnetprice = nqtorigtaxprice.div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
||||||
|
newBvo.setNqtnetprice(Nqtnetprice.setScale(4, 4));
|
||||||
|
//,ntaxprice --主本币含税单价 , nprice --主本币无税单价
|
||||||
|
newBvo.setNtaxprice(nqtorigtaxprice.div(dVqtunitrate).multiply(nexchangerate).setScale(4, 4));
|
||||||
|
UFDouble Nprice = nqtorigtaxprice.div(dVqtunitrate).div(UFDouble.ONE_DBL.add(ntaxrate.div(100))).multiply(nexchangerate);
|
||||||
|
newBvo.setNprice(Nprice.setScale(4, 4));
|
||||||
|
//,ntaxnetprice --主本币含税净价
|
||||||
|
newBvo.setNtaxnetprice(nqtorigtaxprice.div(dVqtunitrate).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)));
|
||||||
|
newBvo.setNtaxmny(nqtorigtaxprice.multiply(nexchangerate).multiply(newBvo.getNqtunitnum()).setScale(2, 4));
|
||||||
|
newBvo.setNcaltaxmny(wsje);
|
||||||
|
UFDouble ntax = norigtaxmny.multiply(nexchangerate).sub(wsje);
|
||||||
|
newBvo.setNtax(ntax.setScale(2, 4));
|
||||||
|
newBvo.setCrowno(bodydata.get("crowno") + "");
|
||||||
|
// 是否赠品
|
||||||
|
String blargessflag = bodydata.getOrDefault("blargessflag", "N") + "";
|
||||||
|
newBvo.setBlargessflag(UFBoolean.valueOf(blargessflag));
|
||||||
|
bvoList.add(newBvo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||||||
vo.setChildrenVO(array);
|
vo.setChildrenVO(array);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 填充默认值
|
// 填充默认值
|
||||||
new SaleOrderSaveFillValue().setDefValue(copyVOs);
|
new SaleOrderSaveFillValue().setDefValue(copyVOs);
|
||||||
SaleOrderBVO newBvo = null;
|
Map<String, List<SaleOrderBVO>> listMap = new HashMap<>();
|
||||||
for (SaleOrderVO copyVO : copyVOs) {
|
for (SaleOrderVO copyVO : copyVOs) {
|
||||||
|
List<SaleOrderBVO> newBvoList = new ArrayList<>();
|
||||||
for (SaleOrderBVO saleOrderBVO : copyVO.getChildrenVO()) {
|
for (SaleOrderBVO saleOrderBVO : copyVO.getChildrenVO()) {
|
||||||
if (VOStatus.NEW == saleOrderBVO.getStatus()) {
|
if (VOStatus.NEW == saleOrderBVO.getStatus()) {
|
||||||
newBvo = (SaleOrderBVO) saleOrderBVO.clone();
|
SaleOrderBVO newBvo = (SaleOrderBVO) saleOrderBVO.clone();
|
||||||
|
newBvoList.add(newBvo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
listMap.put(copyVO.getParentVO().getCsaleorderid(), newBvoList);
|
||||||
}
|
}
|
||||||
if (newBvo != null) {
|
if (!listMap.isEmpty()) {
|
||||||
for (SaleOrderVO oldVO : oldVOs) {
|
for (SaleOrderVO oldVO : oldVOs) {
|
||||||
SaleOrderBVO[] bvos = oldVO.getChildrenVO();
|
String csaleorderid = oldVO.getParentVO().getCsaleorderid();
|
||||||
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
List<SaleOrderBVO> newBvoList = listMap.get(csaleorderid);
|
||||||
bvoList.add(newBvo);
|
if (newBvoList != null && !newBvoList.isEmpty()) {
|
||||||
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
SaleOrderBVO[] bvos = oldVO.getChildrenVO();
|
||||||
oldVO.setChildrenVO(array);
|
List<SaleOrderBVO> bvoList = new ArrayList<>(Arrays.asList(bvos));
|
||||||
|
bvoList.addAll(newBvoList);
|
||||||
|
SaleOrderBVO[] array = bvoList.toArray(new SaleOrderBVO[0]);
|
||||||
|
oldVO.setChildrenVO(array);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*for (SaleOrderVO combinBillVO : copyVOs) {
|
/*for (SaleOrderVO combinBillVO : copyVOs) {
|
||||||
|
|
|
@ -32,6 +32,7 @@ import nc.vo.so.m30.revise.entity.SaleOrderHistoryVO;
|
||||||
import nccloud.api.rest.utils.NCCRestUtils;
|
import nccloud.api.rest.utils.NCCRestUtils;
|
||||||
import nccloud.api.so.m30.IAPISaleOrderMaitain;
|
import nccloud.api.so.m30.IAPISaleOrderMaitain;
|
||||||
import nccloud.api.so.m30.IAPISaleOrderQuery;
|
import nccloud.api.so.m30.IAPISaleOrderQuery;
|
||||||
|
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||||||
import nccloud.framework.core.exception.ExceptionUtils;
|
import nccloud.framework.core.exception.ExceptionUtils;
|
||||||
import nccloud.openapi.scmpub.pub.NCCPubRestResource;
|
import nccloud.openapi.scmpub.pub.NCCPubRestResource;
|
||||||
import nccloud.openapi.scmpub.pub.TransferMapToVOTool;
|
import nccloud.openapi.scmpub.pub.TransferMapToVOTool;
|
||||||
|
@ -378,7 +379,6 @@ public class SaleOrderResource extends NCCPubRestResource {
|
||||||
TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class,
|
TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class,
|
||||||
true);
|
true);
|
||||||
SaleOrderVO[] vos = vosList.toArray(new SaleOrderVO[vosList.size()]);
|
SaleOrderVO[] vos = vosList.toArray(new SaleOrderVO[vosList.size()]);
|
||||||
List<Map<String, Object>> addMapList = new ArrayList<Map<String, Object>>();
|
|
||||||
for (Map<String, Object> objectMap : paramList) {
|
for (Map<String, Object> objectMap : paramList) {
|
||||||
Map<String, Object> headdata = (Map<String, Object>) objectMap.get(HEADTABLE);
|
Map<String, Object> headdata = (Map<String, Object>) objectMap.get(HEADTABLE);
|
||||||
List<Object> bodyArr = (List<Object>) objectMap.get(BODYTABLE);
|
List<Object> bodyArr = (List<Object>) objectMap.get(BODYTABLE);
|
||||||
|
@ -386,30 +386,28 @@ public class SaleOrderResource extends NCCPubRestResource {
|
||||||
Map<String, Object> bodydata = (Map<String, Object>) body;
|
Map<String, Object> bodydata = (Map<String, Object>) body;
|
||||||
if (!(bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) {
|
if (!(bodydata.getOrDefault("vbdef11", "") + "").isEmpty()) {
|
||||||
String vbdef11 = bodydata.get("vbdef11") + "";
|
String vbdef11 = bodydata.get("vbdef11") + "";
|
||||||
|
String dr = bodydata.getOrDefault("dr", "0") + "";
|
||||||
String csaleorderid = bodydata.get("csaleorderid") + "";
|
String csaleorderid = bodydata.get("csaleorderid") + "";
|
||||||
String countSql = "SELECT count(1) FROM so_saleorder_b" +
|
String countSql = "SELECT count(1) FROM so_saleorder_b" +
|
||||||
" WHERE nvl(dr,0) = 0 and csaleorderid = '[csaleorderid]' and vbdef11 = '[vbdef11]' ";
|
" WHERE nvl(dr,0) = 0 and csaleorderid = '[csaleorderid]' and vbdef11 = '[vbdef11]' ";
|
||||||
countSql = countSql.replace("[csaleorderid]", csaleorderid);
|
countSql = countSql.replace("[csaleorderid]", csaleorderid);
|
||||||
countSql = countSql.replace("[vbdef11]", vbdef11);
|
countSql = countSql.replace("[vbdef11]", vbdef11);
|
||||||
Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor());
|
Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor());
|
||||||
if (num <= 0) {
|
if ("0".equals(dr) && num <= 0) {
|
||||||
bodydata.put("status", "add");
|
bodydata.put("status", "add");
|
||||||
Map map = new HashMap();
|
|
||||||
map.put(headdata.get("csaleorderid"), objectMap);
|
|
||||||
addMapList.add(map);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 调用接口保存
|
// 调用接口保存
|
||||||
IAPISaleOrderMaitain service =
|
IAPISaleOrderMaitain service =
|
||||||
NCLocator.getInstance().lookup(IAPISaleOrderMaitain.class);
|
NCLocator.getInstance().lookup(IAPISaleOrderMaitain.class);
|
||||||
SaleOrderVO[] results = service.update(vos, addMapList);
|
SaleOrderVO[] results = service.update(vos, paramList);
|
||||||
// 包装返回信息
|
// 包装返回信息
|
||||||
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildSuccessResult(
|
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildSuccessResult(
|
||||||
results, "销售订单修改成功"));
|
results, "销售订单修改成功"));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
NCCForUAPLogger.debug("update:" + e.getMessage());
|
||||||
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildFailResult(
|
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildFailResult(
|
||||||
null, "销售订单修改异常:" + e.getMessage()));
|
null, "销售订单修改异常:" + e.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue