补丁编码:SUPPORT-YonBIP高级版2312-Special-20251107095919-135697

This commit is contained in:
mzr 2025-11-09 21:46:56 +08:00
parent 6910229b30
commit f201d40bca
2 changed files with 171 additions and 0 deletions

View File

@ -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<CircularlyAccessibleValueObject> numNotNull = new ArrayList();
List<CircularlyAccessibleValueObject> 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<CircularlyAccessibleValueObject> numNotNull, List<CircularlyAccessibleValueObject> 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;
}
}

View File

@ -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<PurchaseInVO> processer = new ICAroundProcesser();
ICRule<PurchaseInVO> rule = new ICOrgFillRule();
processer.addFillvalueRule(rule);
ICRule<PurchaseInVO> var4 = new ICCountryInfoFillRule();
processer.addFillvalueRule(var4);
ICRule<PurchaseInVO> var5 = new ICCvendoridFillRule();
processer.addFillvalueRule(var5);
ICRule<PurchaseInVO> var6 = new ICCwarehouseidFillRule();
processer.addFillvalueRule(var6);
ICRule<PurchaseInVO> var7 = new ICTranstypeFillRule();
processer.addFillvalueRule(var7);
ICRule<PurchaseInVO> var8 = new ICMaterialFullRule();
processer.addFillvalueRule(var8);
ICRule<PurchaseInVO> var9 = new Choose45DefaultFillRule();
processer.addFillvalueRule(var9);
ICRule<PurchaseInVO> var10 = new ICNchangestdrateFillRule();
processer.addFillvalueRule(var10);
ICRule<PurchaseInVO> var11 = new ICNtaxrateFillRule();
processer.addFillvalueRule(var11);
processer.fillvalue(vos);
return vos;
}
}