From 399bc55d044ede198a9ef592d5ee9731218dcb88 Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 23 Apr 2025 18:49:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E5=92=8C?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=8F=91=E7=A5=A8=E4=BF=9D=E5=AD=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3-=E5=8D=95=E4=BB=B7=E9=87=91=E9=A2=9D=E7=AD=89?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=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 | 43 +++++++++++++++++-- .../operator/IAPISaleInvMaitainImpl.java | 38 ++++++++-------- 2 files changed, 59 insertions(+), 22 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 60380fb..aaa0b32 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -11,6 +11,7 @@ import nc.itf.scmpub.reference.uap.bd.customer.CustomerPubService; import nc.itf.scmpub.reference.uap.pf.PfServiceScmUtil; import nc.itf.so.m30.self.ISaleOrderMaintain; import nc.itf.so.m30.self.ISaleOrderScriptMaintain; +import nc.itf.uap.IUAPQueryBS; import nc.itf.uap.pf.IPFBusiAction; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; @@ -25,6 +26,7 @@ import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDate; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.AppContext; +import nc.vo.pubapp.calculator.HslParseUtil; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.scmpub.check.billvalidate.BillVOsCheckRule; import nc.vo.scmpub.fill.pricemny.INumPriceMnyCalculator; @@ -44,6 +46,7 @@ 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.commons.lang.StringUtils; import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; import nccloud.openapi.scmpub.pub.TransferMapToVOTool; import nccloud.putitf.riart.billtype.IBilltypeService; @@ -193,6 +196,7 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { UFDouble nmny = childrenVO.getNmny(); nmny = nmny.setScale(2, UFDouble.ROUND_HALF_UP); childrenVO.setNmny(nmny); + childrenVO.setNcaltaxmny(nmny);// 计税金额 // 本币价税合计 UFDouble ntaxmny = childrenVO.getNtaxmny(); ntaxmny = ntaxmny.setScale(2, UFDouble.ROUND_HALF_UP); @@ -241,9 +245,25 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { UFDouble nnetprice = childrenVO.getNnetprice(); nnetprice = nnetprice.setScale(4, UFDouble.ROUND_HALF_UP); childrenVO.setNnetprice(nnetprice); - - UFDouble nastnum = childrenVO.getNastnum(); - sumnum = sumnum.add(nastnum); + Map goodsMap = getMaterlInfo(childrenVO.getCmaterialid()); + String measrate = "1/1"; + if (goodsMap != null && StringUtils.isEmpty(goodsMap.getOrDefault("measrate","") + "")) { + measrate = goodsMap.get("measrate") + ""; + } + childrenVO.setVchangerate(measrate);// 换算率 + childrenVO.setVqtunitrate(measrate);// 报价换算率 + UFDouble[] measrateNums = HslParseUtil.parseHsl(measrate); + UFDouble measrateNum = UFDouble.ONE_DBL; + if (null != measrateNums && measrateNums.length != 0) { + measrateNum = measrateNums[0].div(measrateNums[1]).setScale(2, 4); + } + // 主数量 + UFDouble nnum = childrenVO.getNnum().setScale(2, UFDouble.ROUND_HALF_UP); + childrenVO.setNnum(nnum); + UFDouble nastnum = nnum.multiply(measrateNum).setScale(2, UFDouble.ROUND_HALF_UP); + childrenVO.setNastnum(nastnum);// 数量 + childrenVO.setNqtunitnum(nastnum);// 报价单位数量 + sumnum = sumnum.add(nnum); sumnny = sumnny.add(norigtaxmny); } @@ -838,6 +858,23 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { } } + /** + * 获取物料的信息 + * @param pk_material + * @return + * @throws BusinessException + */ + private Map getMaterlInfo(String pk_material) throws BusinessException { + if (pk_material == null || pk_material.isEmpty()) { + return null; + } + IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); + String sql = " select nvl(measrate, '1/1') measrate" + + " from bd_materialconvert" + + " where pk_material='" + pk_material + "' "; + return (Map) queryBS.executeQuery(sql, new MapProcessor()); + } + /** * 修订销售订单的时候新增销售订单物料行的数据 */ diff --git a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java index d3af3a9..b0e00ce 100644 --- a/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java +++ b/so/src/public/nccloud/api/so/saleinvoice/operator/IAPISaleInvMaitainImpl.java @@ -337,7 +337,7 @@ public class IAPISaleInvMaitainImpl { otherJson.put("nexchangerate", nexchangerate); // 输入参数:从你的 item 获取各个字段 - BigDecimal nastnum = new BigDecimal(item.getString("nastnum")); // 数量 + BigDecimal nastnum = new BigDecimal(item.getString("nnum")); // 数量 nastnum = nastnum.setScale(4, RoundingMode.HALF_UP); BigDecimal nqtorigtaxprice = new BigDecimal(item.getString("nqtorigtaxprice")); // 含税单价 nqtorigtaxprice = nqtorigtaxprice.setScale(4, RoundingMode.HALF_UP); @@ -376,22 +376,22 @@ public class IAPISaleInvMaitainImpl { // 税额 ntax = ntaxmny.subtract(nmny).setScale(2, RoundingMode.HALF_UP); - UFDouble nastnum1 = new UFDouble(item.getString("nastnum")); + UFDouble nnum = new UFDouble(item.getString("nnum"));// 主数量 - itemDetails.put("nnum", nastnum1);// 主数量 - itemDetails.put("nqtorigprice", nqtorigprice);// 无税单价 - itemDetails.put("norigprice", nqtorigprice);// 主无税单价 - itemDetails.put("norigmny", norigmny);// 无税金额 - itemDetails.put("nmny", nmny);// 本币无税金额 - itemDetails.put("norigtaxmny", norigtaxmny);// 价税合计 - itemDetails.put("norigtaxprice", norigtaxprice);// 主含税单价 - itemDetails.put("norignetprice", norignetprice);// 主无税净价 - itemDetails.put("nqtorigtaxprice", nqtorigtaxprice);// 含税单价 - itemDetails.put("ntax", ntax);// 税额 - itemDetails.put("ncaltaxmny", ncaltaxmny);// 计税金额 - itemDetails.put("norigtaxnetprice", norigtaxnetprice);// 主含税净价 - itemDetails.put("nnetprice", nnetprice);// 主本币无税净价 - itemDetails.put("ntaxmny", ntaxmny);// 本币价税合计 + itemDetails.put("nastnum", nnum);// 数量 + // itemDetails.put("nqtorigprice", nqtorigprice);// 无税单价 + // itemDetails.put("norigprice", nqtorigprice);// 主无税单价 + // itemDetails.put("norigmny", norigmny);// 无税金额 + // itemDetails.put("nmny", nmny);// 本币无税金额 + // itemDetails.put("norigtaxmny", norigtaxmny);// 价税合计 + // itemDetails.put("norigtaxprice", norigtaxprice);// 主含税单价 + // itemDetails.put("norignetprice", norignetprice);// 主无税净价 + // itemDetails.put("nqtorigtaxprice", nqtorigtaxprice);// 含税单价 + // itemDetails.put("ntax", ntax);// 税额 + // itemDetails.put("ncaltaxmny", ncaltaxmny);// 计税金额 + // itemDetails.put("norigtaxnetprice", norigtaxnetprice);// 主含税净价 + // itemDetails.put("nnetprice", nnetprice);// 主本币无税净价 + // itemDetails.put("ntaxmny", ntaxmny);// 本币价税合计 csaleinvoicebid.add(itemDetails); } @@ -511,9 +511,9 @@ public class IAPISaleInvMaitainImpl { vchangerateNum = vchangerateNums[0].div(vchangerateNums[1]).setScale(2, 4); } // BIP合同平台的数量对应BIP2312的主数量,BIP2312的 数量=主数量*换算关系 - UFDouble nastnum = new UFDouble(bipBvoJson.getString("nastnum")); - newInvBVO.setNastnum(nastnum.multiply(vchangerateNum).setScale(2, 4)); // 数量 - newInvBVO.setNnum(nastnum); // 主数量 + UFDouble nnum = new UFDouble(bipBvoJson.getString("nnum")); + newInvBVO.setNastnum(nnum.multiply(vchangerateNum).setScale(2, 4)); // 数量 + newInvBVO.setNnum(nnum); // 主数量 newInvBVO.setNqtorigtaxprice(new UFDouble(bipBvoJson.getString("nqtorigtaxprice"))); // 含税单价 newInvBVO.setNqtorigprice(new UFDouble(bipBvoJson.getString("nqtorigprice"))); // 无税单价 newInvBVO.setNorigtaxprice(new UFDouble(bipBvoJson.getString("norigtaxprice"))); // 主含税单价