From c5f34f9f247a9627a333860d7a5200b9fdb97b8f Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Mon, 10 Mar 2025 17:41:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2-=E4=B8=8B=E6=B8=B8=E6=A0=A1=E9=AA=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=92=8C=E6=96=B0=E5=A2=9E=E8=A1=8C=E6=B1=87=E7=8E=87?= =?UTF-8?q?=E5=8F=96=E5=80=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/so/m30/APISaleOrderMaitainImpl.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) 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);