diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index 246ec40..785a24b 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -234,18 +234,6 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { @Override public SaleOrderVO[] update(SaleOrderVO[] vos, List> paramList) throws BusinessException { - for (SaleOrderVO vo : vos) { - 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()); - Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); - if (num > 0) { - // fopposeflag 对冲标记 0=正常 1=已被对冲 2=对冲生成 - ExceptionUtils.wrappBusinessException("下游存在未红冲完成的销售发票"); - return null; - } - } // 编码转id setOtherId(vos); // 获取参数vo的id @@ -303,15 +291,30 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { addBvo(combinBillVOs, paramList); } } - // 联动计算 - // INumPriceMnyCalculator cal = new SaleOrderNPriceMnyCal(combinBillVOs); - // cal.calculate(); + for (SaleOrderVO vo : combinBillVOs) { + SaleOrderBVO[] bvos = vo.getChildrenVO(); + // 判断是否存在新增的子表 + boolean hasNewStatus = Arrays.stream(bvos) + .anyMatch(bvo -> bvo.getStatus() == VOStatus.NEW); + // 新增子表的情况下不校验是否存在下游 + if (!hasNewStatus) { + 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()); + Integer num = (Integer) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); + if (num > 0) { + // fopposeflag 对冲标记 0=正常 1=已被对冲 2=对冲生成 + ExceptionUtils.wrappBusinessException("下游存在未红冲完成的销售发票"); + return null; + } + } + } // 保存 ISaleOrderScriptMaintain maintainsrv = NCLocator.getInstance().lookup(ISaleOrderScriptMaintain.class); SaleOrderVO[] retvos = maintainsrv.saleOrderUpdate(combinBillVOs, null, originVos); - ; return retvos; } @@ -755,8 +758,15 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if (!listMap.isEmpty()) { for (SaleOrderVO oldVO : oldVOs) { String csaleorderid = oldVO.getParentVO().getCsaleorderid(); + SaleOrderBVO oneBvo = oldVO.getChildrenVO()[0]; + // 折本汇率 + UFDouble nexchangerate = oneBvo.getNexchangerate(); List newBvoList = listMap.get(csaleorderid); if (newBvoList != null && !newBvoList.isEmpty()) { + // 上边填充默认值的时候取了系统的默认汇率,需要用BIP传的 + for (SaleOrderBVO saleOrderBVO : newBvoList) { + saleOrderBVO.setNexchangerate(nexchangerate); + } SaleOrderBVO[] bvos = oldVO.getChildrenVO(); List bvoList = new ArrayList<>(Arrays.asList(bvos)); bvoList.addAll(newBvoList);