From f201d40bca36db5ea7e93d3ad74df5ddde58676c Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Sun, 9 Nov 2025 21:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E4=B8=81=E7=BC=96=E7=A0=81=EF=BC=9ASU?= =?UTF-8?q?PPORT-YonBIP=E9=AB=98=E7=BA=A7=E7=89=882312-Special-20251107095?= =?UTF-8?q?919-135697?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ICPriceAndMoneyCalculateBillFill.java | 123 ++++++++++++++++++ .../ic/m45/fill/PurchaseInSaveFillValue.java | 48 +++++++ 2 files changed, 171 insertions(+) create mode 100644 ic/src/private/nc/pubimpl/ic/api/fill/ICPriceAndMoneyCalculateBillFill.java create mode 100644 ic/src/private/nccloud/api/impl/ic/m45/fill/PurchaseInSaveFillValue.java diff --git a/ic/src/private/nc/pubimpl/ic/api/fill/ICPriceAndMoneyCalculateBillFill.java b/ic/src/private/nc/pubimpl/ic/api/fill/ICPriceAndMoneyCalculateBillFill.java new file mode 100644 index 00000000..7a23b1f2 --- /dev/null +++ b/ic/src/private/nc/pubimpl/ic/api/fill/ICPriceAndMoneyCalculateBillFill.java @@ -0,0 +1,123 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.pubimpl.ic.api.fill; + +import java.util.ArrayList; +import java.util.List; +import nc.bs.ic.pub.env.ICBSContext; +import nc.vo.ic.m45.entity.PurchaseInVO; +import nc.vo.ic.m4c.entity.SaleOutVO; +import nc.vo.ic.pub.calc.BusiCalculator; +import nc.vo.ic.pub.calc.PriceAndMoneyCalculator; +import nc.vo.ic.pub.calc.WeightAndVolumeCalc; +import nc.vo.ic.pub.calc.PriceAndMoneyCalculator.MnyCalcType; +import nc.vo.ic.pub.define.IBizObject; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill; +import nc.vo.pubapp.scale.ScaleUtils; +import nc.vo.scmpub.fill.billfill.IBillValueFill; +import nc.vo.scmpub.util.ArrayUtil; + +public class ICPriceAndMoneyCalculateBillFill implements IBillValueFill { + public ICPriceAndMoneyCalculateBillFill() { + } + + public AbstractBill[] fillValue(AbstractBill[] billVOs) throws BusinessException { + if (ArrayUtil.isEmpty(billVOs)) { + return null; + } else { + List numNotNull = new ArrayList(); + List numNullButAstNumNotNullbodys = new ArrayList(); + this.putVO(billVOs, numNotNull, numNullButAstNumNotNullbodys); + BusiCalculator cal = BusiCalculator.getBusiCalculatorAtBS(); + if (numNullButAstNumNotNullbodys.size() > 0) { + cal.calcNum((CircularlyAccessibleValueObject[])numNullButAstNumNotNullbodys.toArray(new CircularlyAccessibleValueObject[0]), "nassistnum"); + numNotNull.addAll(numNullButAstNumNotNullbodys); + } + + if (numNotNull.size() == 0) { + return billVOs; + } else { + CircularlyAccessibleValueObject[] calVOs = (CircularlyAccessibleValueObject[])numNotNull.toArray(new CircularlyAccessibleValueObject[0]); + cal.calcNum(calVOs, "nnum"); + cal.calcShouldAstNum(calVOs, "vchangerate"); + if (this.isNeedCalMny(billVOs)) { + if (billVOs[0].getChildrenVO()[0].getAttributeValue("nqtorigprice") != null) { + cal.calcMnyNCC(calVOs, "nqtorigprice"); + } + + cal.calcMny(calVOs, "nnum"); + } + + ScaleUtils scaleUtil = ScaleUtils.getScaleUtilAtBS(); + ICBSContext context = new ICBSContext(); + PriceAndMoneyCalculator pcalc = new PriceAndMoneyCalculator(scaleUtil, context.getOrgInfo()); + + for(CircularlyAccessibleValueObject bvo : calVOs) { + String pk_finance = context.getOrgInfo().getFinanceOrgIDByCalBodyID((String)bvo.getAttributeValue("pk_org")); + if (bvo.getAttributeValue("ncostprice") != null && bvo.getAttributeValue("ncostmny") != null) { + pcalc.calcPriceMny((IBizObject)bvo, MnyCalcType.Mny, pk_finance); + } else { + pcalc.calcPriceMny((IBizObject)bvo, MnyCalcType.Num, pk_finance); + } + } + + WeightAndVolumeCalc wcalc = new WeightAndVolumeCalc(scaleUtil); + IBizObject[] calVOObjs = new IBizObject[calVOs.length]; + + for(int i = 0; i < calVOObjs.length; ++i) { + calVOObjs[i] = (IBizObject)calVOs[i]; + } + + wcalc.calculator(calVOObjs, context.getInvInfo()); + return billVOs; + } + } + } + + private void putVO(AbstractBill[] billVOs, List numNotNull, List numNullButAstNumNotNullbodys) { + for(AbstractBill billVO : billVOs) { + CircularlyAccessibleValueObject[] bodyVOs = billVO.getAllChildrenVO(); + if (!ArrayUtil.isEmpty(billVOs)) { + for(CircularlyAccessibleValueObject bodyVO : bodyVOs) { + int reuslt = this.getNumStatue(bodyVO); + switch (reuslt) { + case -1: + default: + break; + case 0: + numNotNull.add(bodyVO); + break; + case 1: + numNullButAstNumNotNullbodys.add(bodyVO); + break; + case 2: + numNotNull.add(bodyVO); + } + } + } + } + + } + + private int getNumStatue(CircularlyAccessibleValueObject bodyVO) { + UFDouble nnum = (UFDouble)bodyVO.getAttributeValue("nnum"); + UFDouble nastnum = (UFDouble)bodyVO.getAttributeValue("nassistnum"); + if (nnum == null && nastnum == null) { + return -1; + } else if (nnum != null && nastnum == null) { + return 0; + } else { + return nnum == null && nastnum != null ? 1 : 2; + } + } + + private boolean isNeedCalMny(AbstractBill[] billVOs) { + return billVOs[0] instanceof SaleOutVO || billVOs[0] instanceof PurchaseInVO; + } +} diff --git a/ic/src/private/nccloud/api/impl/ic/m45/fill/PurchaseInSaveFillValue.java b/ic/src/private/nccloud/api/impl/ic/m45/fill/PurchaseInSaveFillValue.java new file mode 100644 index 00000000..09a4fcca --- /dev/null +++ b/ic/src/private/nccloud/api/impl/ic/m45/fill/PurchaseInSaveFillValue.java @@ -0,0 +1,48 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nccloud.api.impl.ic.m45.fill; + +import nc.bs.ic.pub.base.ICRule; +import nc.vo.ic.m45.entity.PurchaseInVO; +import nc.vo.ic.pub.rule.ICCountryInfoFillRule; +import nc.vo.ic.pub.rule.ICCvendoridFillRule; +import nc.vo.ic.pub.rule.ICCwarehouseidFillRule; +import nc.vo.ic.pub.rule.ICMaterialFullRule; +import nc.vo.ic.pub.rule.ICNchangestdrateFillRule; +import nc.vo.ic.pub.rule.ICNtaxrateFillRule; +import nc.vo.ic.pub.rule.ICOrgFillRule; +import nc.vo.ic.pub.rule.ICTranstypeFillRule; +import nc.vo.ic.pub.rule.processer.ICAroundProcesser; +import nccloud.api.impl.ic.m45.rule.Choose45DefaultFillRule; + +public class PurchaseInSaveFillValue { + public PurchaseInSaveFillValue() { + } + + public PurchaseInVO[] setDefaultValue(PurchaseInVO[] vos) { + ICAroundProcesser processer = new ICAroundProcesser(); + ICRule rule = new ICOrgFillRule(); + processer.addFillvalueRule(rule); + ICRule var4 = new ICCountryInfoFillRule(); + processer.addFillvalueRule(var4); + ICRule var5 = new ICCvendoridFillRule(); + processer.addFillvalueRule(var5); + ICRule var6 = new ICCwarehouseidFillRule(); + processer.addFillvalueRule(var6); + ICRule var7 = new ICTranstypeFillRule(); + processer.addFillvalueRule(var7); + ICRule var8 = new ICMaterialFullRule(); + processer.addFillvalueRule(var8); + ICRule var9 = new Choose45DefaultFillRule(); + processer.addFillvalueRule(var9); + ICRule var10 = new ICNchangestdrateFillRule(); + processer.addFillvalueRule(var10); + ICRule var11 = new ICNtaxrateFillRule(); + processer.addFillvalueRule(var11); + processer.fillvalue(vos); + return vos; + } +}