From a46fd3a138532fc5800fb1292832677a8e006fe0 Mon Sep 17 00:00:00 2001 From: lihao Date: Tue, 22 Apr 2025 17:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=8D=95=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BB=B7=E7=A8=8E=E5=90=88=E8=AE=A1=E5=90=8E=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E8=B6=85=E8=BF=87=E4=B8=8A=E6=B8=B8=E9=94=80?= =?UTF-8?q?=E5=94=AE=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GatheringbillEditSaveBatchBSAction.java | 14 +- .../GatheringbillSaveBatchBSAction.java | 16 +- .../public/nc/bs/arap/util/ArapVOUtils.java | 530 ++++++++++++++++++ .../GatheringAddAfterListenerAction.java | 4 +- .../GatheringUpdateBeforeListener.java | 4 +- 5 files changed, 553 insertions(+), 15 deletions(-) create mode 100644 arap/src/public/nc/bs/arap/util/ArapVOUtils.java diff --git a/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java b/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java index 92e08e1..2c0182d 100644 --- a/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java +++ b/arap/src/private/nc/bs/arap/actions/GatheringbillEditSaveBatchBSAction.java @@ -13,6 +13,7 @@ import nc.bs.arap.validator.CrossRuleCheckValidator; import nc.bs.dao.BaseDAO; import nc.jdbc.framework.processor.MapProcessor; import nc.vo.arap.basebill.BaseBillVO; +import nc.vo.arap.gathering.GatheringBillItemVO; import nc.vo.arap.utils.StringUtil; import nc.vo.pub.AggregatedValueObject; import nc.vo.pub.BusinessException; @@ -54,10 +55,10 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction UFDouble money = billVO.getMoney(); // 修改后的金额 UFDouble oriMoney = billOriVO.getMoney(); // 修改前的金额 String pk_tradetype = billVO.getPk_tradetype(); - if (!"F2-Cxx-02".equals(pk_tradetype)) { - continue; - } - String def3 = billVO.getDef3(); // 收款单对应的销售订单id +// if (!"F2-Cxx-02".equals(pk_tradetype)) { +// continue; +// } + String def3 = ((GatheringBillItemVO)bill.getChildrenVO()[0]).getSrc_billid(); // 收款单对应的销售订单id if (StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)) { // 无绑定的销售订单则下一次循环 continue; @@ -79,8 +80,9 @@ public class GatheringbillEditSaveBatchBSAction extends BillUpdateBatchBSAction ntotalorigmny = new UFDouble( saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); } - UFDouble moreMoney = nreceivedmny.add(changeMoney).sub(ntotalorigmny); - if (nreceivedmny.add(changeMoney).compareTo(ntotalorigmny) > 0) { + + if (money.compareTo(ntotalorigmny) > 0) { + UFDouble moreMoney = money.sub(ntotalorigmny); throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】"); } } diff --git a/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java b/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java index fd55a8b..4cd2598 100644 --- a/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java +++ b/arap/src/private/nc/bs/arap/actions/GatheringbillSaveBatchBSAction.java @@ -14,6 +14,7 @@ import nc.bs.arap.validator.CrossRuleCheckValidator; import nc.bs.dao.BaseDAO; import nc.jdbc.framework.processor.MapProcessor; import nc.vo.arap.basebill.BaseBillVO; +import nc.vo.arap.gathering.GatheringBillItemVO; import nc.vo.arap.utils.StringUtil; import nc.vo.pub.AggregatedValueObject; import nc.vo.pub.BusinessException; @@ -66,10 +67,10 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { BaseBillVO billVO = (BaseBillVO) bill.getParentVO(); //修改的收款单 UFDouble money = billVO.getMoney(); //金额 String pk_tradetype = billVO.getPk_tradetype(); - if(!"F2-Cxx-02".equals(pk_tradetype)){ - continue; - } - String def3 = billVO.getDef3(); //收款单对应的销售订单id +// if(!"F2-Cxx-02".equals(pk_tradetype)){ +// continue; +// } + String def3 = ((GatheringBillItemVO)bill.getChildrenVO()[0]).getSrc_billid(); // 收款单对应的销售订单id if(StringUtil.isEmpty(def3) || "N".equals(def3) || "~".equals(def3)){ //无绑定的销售订单则下一次循环 continue; @@ -78,6 +79,7 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { //根据销售订单id去查询销售订单 BaseDAO dao = new BaseDAO(); String sql = "select nreceivedmny,ntotalorigmny from so_saleorder where dr = 0 and csaleorderid = '" +def3+"'"; + Map saleMap = (Map)dao.executeQuery(sql, new MapProcessor()); //销售订单价税合计 UFDouble ntotalorigmny = UFDouble.ZERO_DBL; @@ -87,9 +89,9 @@ public class GatheringbillSaveBatchBSAction extends BillInsertBatchBSAction { nreceivedmny = new UFDouble(saleMap.get("nreceivedmny") == null ? "0" : saleMap.get("nreceivedmny").toString()); ntotalorigmny = new UFDouble(saleMap.get("ntotalorigmny") == null ? "0" : saleMap.get("ntotalorigmny").toString()); } - UFDouble moreMoney = nreceivedmny.add(money).sub(ntotalorigmny); - if(nreceivedmny.add(money).compareTo(ntotalorigmny) > 0){ - throw new BusinessException("【该笔收款已超销售订单"+ moreMoney +"元,无法传输!请检查订单累计收款金额!】"); + if (money.compareTo(ntotalorigmny) > 0) { + UFDouble moreMoney = money.sub(ntotalorigmny); + throw new BusinessException("【该笔收款已超销售订单" + moreMoney + "元,无法传输!请检查订单累计收款金额!】"); } } } diff --git a/arap/src/public/nc/bs/arap/util/ArapVOUtils.java b/arap/src/public/nc/bs/arap/util/ArapVOUtils.java new file mode 100644 index 0000000..d7d6c28 --- /dev/null +++ b/arap/src/public/nc/bs/arap/util/ArapVOUtils.java @@ -0,0 +1,530 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.arap.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import nc.bs.arap.bill.ArapBillPubUtil; +import nc.bs.businessevent.BdUpdateEvent; +import nc.bs.businessevent.BusinessEvent; +import nc.bs.businessevent.IBusinessEvent; +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.bs.framework.common.NCLocator; +import nc.bs.logging.Log; +import nc.bs.logging.Logger; +import nc.jdbc.framework.processor.ColumnListProcessor; +import nc.pubitf.uapbd.IMaterialPubService; +import nc.pubitf.uapbd.MeasdocUtil; +import nc.ui.dbcache.DBCacheFacade; +import nc.vo.arap.basebill.BaseAggVO; +import nc.vo.arap.basebill.BaseBillVO; +import nc.vo.arap.basebill.BaseItemVO; +import nc.vo.arap.djlx.DjLXVO; +import nc.vo.arap.global.ArapBillDealVOConsts; +import nc.vo.arap.pub.ArapConstant; +import nc.vo.arap.pub.BillEnumCollection.FromSystem; +import nc.vo.arap.utils.ArrayUtil; +import nc.vo.arap.utils.StringUtil; +import nc.vo.arap.verify.AggverifyVO; +import nc.vo.arap.verify.VerifyDetailVO; +import nc.vo.bd.material.MaterialVO; +import nc.vo.fipub.exception.ExceptionHandler; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.AggregatedValueObject; +import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pub.lang.UFDouble; +import nccloud.commons.lang.ArrayUtils; +import nccloud.commons.lang.StringUtils; + +public final class ArapVOUtils { + private static final String ZB = "zb."; + private static Map materialDecMap = new HashMap(); + + public ArapVOUtils() { + } + + public static Map getDecimalFromSource(List pks) { + Map result = new HashMap(); + + for(String pk : pks) { + if (null != materialDecMap.get(pk)) { + result.put(pk, (Integer)materialDecMap.get(pk)); + } + } + + try { + Map vo = ((IMaterialPubService)NCLocator.getInstance().lookup(IMaterialPubService.class)).queryMaterialBaseInfoByPks((String[])pks.toArray(new String[0]), new String[]{"pk_measdoc"}); + + for(String pk : vo.keySet()) { + MaterialVO materialVO = (MaterialVO)vo.get(pk); + Integer[] num = MeasdocUtil.getInstance().getPrecisionByPks(new String[]{materialVO.getPk_measdoc()}); + if (!StringUtil.isEmptyArry(num)) { + materialDecMap.put(pk, num[0]); + result.put(pk, num[0]); + } else { + materialDecMap.put(pk, 2); + result.put(pk, 2); + } + } + } catch (Exception e) { + Logger.debug(e.getMessage()); + } + + return result; + } + + public static int getDecimalFromSource(Object pk_material) { + try { + if ("~".equals(pk_material) || null == pk_material) { + return 2; + } + + if (null != materialDecMap.get(pk_material)) { + return (Integer)materialDecMap.get(pk_material); + } + + String pkMeasdoc = ""; + + try { + Vector fromDBCache = DBCacheFacade.matchPK("select pk_measdoc from bd_material where pk_material in(?)", new String[]{pk_material.toString()}, "pk_measdoc"); + pkMeasdoc = (String)((Vector)fromDBCache.get(0)).get(0); + } catch (Exception var5) { + Map vo = ((IMaterialPubService)NCLocator.getInstance().lookup(IMaterialPubService.class)).queryMaterialBaseInfoByPks(new String[]{pk_material.toString()}, new String[]{"pk_measdoc"}); + pkMeasdoc = ((MaterialVO)vo.get(pk_material.toString())).getPk_measdoc(); + } + + Integer[] num = MeasdocUtil.getInstance().getPrecisionByPks(new String[]{pkMeasdoc}); + if (!StringUtil.isEmptyArry(num)) { + materialDecMap.put(pk_material, num[0]); + return num[0]; + } + } catch (Exception e) { + Logger.debug(e.getMessage()); + } + + return 0; + } + + public static void validateVoCopyRed(BaseAggVO vo) throws BusinessException { + CircularlyAccessibleValueObject[] childrenVOs = vo.getChildrenVO(); + BaseBillVO bill = (BaseBillVO)vo.getParentVO(); + + for(CircularlyAccessibleValueObject children : childrenVOs) { + BaseItemVO item = (BaseItemVO)children; + if (bill.getBillclass().equals(ArapConstant.ARAP_FK_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 0 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0971")); + } + + if (bill.getBillclass().equals(ArapConstant.ARAP_AP_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 0 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0972")); + } + + if (bill.getBillclass().equals(ArapConstant.ARAP_SK_BILLCLASS) && item.getObjtype() != null && item.getObjtype() == 1 && bill.getIsrefund() != null && bill.getIsrefund().booleanValue()) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0973")); + } + } + + checkBill(new BaseAggVO[]{vo}, "add"); + } + + public static ArapVOData[] getOtherSystemVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, boolean srcBillIdMustNull, boolean srcItemIdMustNull) { + ArrayList agglist = (ArrayList)((BusinessEvent)event).getObject(); + List billList = new ArrayList(); + if (agglist == null) { + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } else { + for(AggverifyVO agg : agglist) { + VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); + CircularlyAccessibleValueObject headVO = agg.getParentVO(); + + for(VerifyDetailVO child : childrenVO) { + if (!child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && StringUtils.isEmpty(child.getBusidata().getSrc_billid()) == srcBillIdMustNull && StringUtils.isEmpty(child.getBusidata().getSrc_itemid()) == srcItemIdMustNull && child.getBusidata().getTop_billtype() != null && child.getBusidata().getTop_billtype().trim().equals(top_billtype)) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } + } + + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } + } + + public static ArapVOData[] getOtherSystemVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, String flag) { + ArrayList agglist = (ArrayList)((BusinessEvent)event).getObject(); + List billList = new ArrayList(); + if (agglist == null) { + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } else { + for(AggverifyVO agg : agglist) { + VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); + CircularlyAccessibleValueObject headVO = agg.getParentVO(); + + for(VerifyDetailVO child : childrenVO) { + if (!child.getBusiflag().equals(ArapBillDealVOConsts.RBVERIFY_FLAG) && !child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && child.getBusidata().getTop_billtype() != null && top_billtype.trim().equals(child.getBusidata().getTop_billtype().trim())) { + if ("0".equals(flag)) { + if (child.getBusidata().getInsurance() != null && child.getBusidata().getInsurance().booleanValue()) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } else if ("1".equals(flag)) { + if (child.getBusidata().getPrepay() != null && child.getBusidata().getPrepay() == 1) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } else if ("2".equals(flag) && child.getBusidata().getPrepay() != null && child.getBusidata().getPrepay() == 0 && child.getBusidata().getInsurance() != null && !child.getBusidata().getInsurance().booleanValue()) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } + } + } + + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } + } + + public static ArapVOData[] getOtherSystemRBVerifyVOData(IBusinessEvent event, String top_billtype, String idfield, String[] valuefields, String flag) { + ArrayList agglist = (ArrayList)((BusinessEvent)event).getObject(); + List billList = new ArrayList(); + if (agglist == null) { + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } else { + for(AggverifyVO agg : agglist) { + VerifyDetailVO[] childrenVO = (VerifyDetailVO[])agg.getChildrenVO(); + CircularlyAccessibleValueObject headVO = agg.getParentVO(); + + for(VerifyDetailVO child : childrenVO) { + if (!child.getBusiflag().equals(ArapBillDealVOConsts.BACKONVERIFY_FLAG) && child.getBusiflag().equals(ArapBillDealVOConsts.RBVERIFY_FLAG) && child.getBusidata().getTop_billtype() != null && top_billtype.trim().equals(child.getBusidata().getTop_billtype().trim())) { + if ("0".equals(flag)) { + if (child.getBusidata().getInsurance() != null && child.getBusidata().getInsurance().booleanValue()) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } else if ("1".equals(flag)) { + if (child.getBusidata().getPrepay() == 1) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } else if ("2".equals(flag) && child.getBusidata().getPrepay() == 0 && child.getBusidata().getInsurance() != null && !child.getBusidata().getInsurance().booleanValue()) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)child.getBusidata().getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, child.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } + } + } + + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } + } + + public static ArapVOData[] getOtherSystemBillVOData(IBusinessEvent event, String src_syscode, String top_billtype, String idfield, String[] valuefields) { + BaseAggVO[] otherSystemBills = getOtherSystemBills(event, src_syscode, top_billtype); + List billList = new ArrayList(); + if (ArrayUtils.isEmpty(otherSystemBills)) { + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } else { + for(BaseAggVO agg : otherSystemBills) { + BaseBillVO headVO = agg.getHeadVO(); + BaseItemVO[] items = agg.getItems(); + + for(BaseItemVO item : items) { + if (StringUtils.isNotEmpty((String)item.getAttributeValue(idfield))) { + ArapVOData vodata = new ArapVOData(); + vodata.setSrcid((String)item.getAttributeValue(idfield)); + + for(String valueField : valuefields) { + if (valueField.startsWith("zb.")) { + vodata.getHeadData().put(valueField, headVO.getAttributeValue(valueField.substring("zb.".length()))); + } else { + vodata.getHeadData().put(valueField, item.getAttributeValue(valueField)); + } + } + + billList.add(vodata); + } + } + } + + return (ArapVOData[])billList.toArray(new ArapVOData[0]); + } + } + + public static BaseAggVO[] getOtherSystemBills(IBusinessEvent event, String src_syscode, String top_billtype) { + Object value = null; + if (event instanceof BusinessEvent) { + value = ((BusinessEvent)event).getObject(); + } else if (event instanceof BdUpdateEvent) { + value = ((BdUpdateEvent)event).getNewObject(); + } + + List billList = new ArrayList(); + BaseAggVO[] bills = new BaseAggVO[0]; + if (null != value) { + if (value.getClass().isArray()) { + Object[] objs = (Object[]) value; + bills = objs instanceof BaseAggVO[] ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); + } else { + bills = new BaseAggVO[]{(BaseAggVO)value}; + } + } + + for(BaseAggVO vo : bills) { + BaseBillVO headVO = vo.getHeadVO(); + Integer billSrcSyscode = headVO.getSrc_syscode(); + if (src_syscode == null || billSrcSyscode != null && src_syscode.equals(billSrcSyscode == null ? "" : billSrcSyscode.toString())) { + BaseItemVO[] items = vo.getItems(); + boolean notMatch = false; + + for(BaseItemVO item : items) { + if (top_billtype != null) { + String billTopBilltype = item.getTop_billtype(); + if (billTopBilltype == null || !top_billtype.equals(billTopBilltype)) { + notMatch = true; + break; + } + } + } + + if (!notMatch) { + billList.add(vo); + } + } + } + + return (BaseAggVO[])billList.toArray(new BaseAggVO[0]); + } + + public static BaseAggVO[] getBills(IBusinessEvent event) { + Object value = null; + if (event instanceof BusinessEvent) { + value = ((BusinessEvent)event).getObject(); + } else if (event instanceof BdUpdateEvent) { + value = ((BdUpdateEvent)event).getNewObject(); + } + + BaseAggVO[] bills = new BaseAggVO[0]; + if (null != value) { + if (value.getClass().isArray()) { + Object[] objs = (Object[]) value; + bills = objs instanceof BaseAggVO[] ? (BaseAggVO[])objs : (BaseAggVO[])ArrayUtil.convertSupers2Subs((AggregatedValueObject[])objs, BaseAggVO.class); + } else { + bills = new BaseAggVO[]{(BaseAggVO)value}; + } + } + + return bills; + } + + public static boolean isOtherSystemPushBill(BaseBillVO billvo, String topBilltype) { + Integer srcSyscode = billvo.getSrc_syscode(); + UFBoolean isflowbill = billvo.getIsflowbill(); + if (isflowbill == null) { + isflowbill = UFBoolean.FALSE; + } + + if (srcSyscode == null) { + Log.getInstance("ArapVOUtils").error("srcSyscode is null"); + return false; + } else if (StringUtils.isNotEmpty(topBilltype) && topBilltype.trim().startsWith("4A")) { + return true; + } else if (StringUtils.isNotEmpty(topBilltype) && "36J3".equals(topBilltype)) { + return true; + } else if (isflowbill.booleanValue()) { + return false; + } else if (srcSyscode == FromSystem.SO.VALUE) { + return false; + } else if (srcSyscode != FromSystem.AR.VALUE && srcSyscode != FromSystem.AP.VALUE && srcSyscode != FromSystem.WBJHPT.VALUE && srcSyscode != FromSystem.XTDJ.VALUE && srcSyscode != FromSystem.FTS.VALUE) { + return true; + } else { + Log.getInstance("ArapVOUtils").error(srcSyscode); + return false; + } + } + + public static boolean isArapRedBill(BaseBillVO billvo, String topBilltype) { + boolean isRed = false; + String pk_billtype = billvo.getPk_billtype(); + if (!StringUtil.isEmptyWithTrim(pk_billtype) && pk_billtype.equals(topBilltype)) { + isRed = true; + } + + return isRed; + } + + public static void resetMoneyBal(AggregatedValueObject[] bills) { + String pk_billtype = (String)bills[0].getParentVO().getAttributeValue("pk_billtype"); + if ("F2".equals(pk_billtype) || "F3".equals(pk_billtype)) { + List result = null; + + try { + result = (List)(new BaseDAO()).executeQuery("select pk_recpaytype from fi_recpaytype where dr=0 and isverification<>'Y'", new ColumnListProcessor()); + } catch (DAOException e) { + ExceptionHandler.consume(e); + } + + for(AggregatedValueObject bill : bills) { + CircularlyAccessibleValueObject[] bodyVOs = bill.getChildrenVO(); + + for(CircularlyAccessibleValueObject obj : bodyVOs) { + BaseItemVO bodyVO = (BaseItemVO)obj; + if (result.contains(bodyVO.getPk_recpaytype())) { + bodyVO.setOccupationmny(UFDouble.ZERO_DBL); + bodyVO.setMoney_bal(UFDouble.ZERO_DBL); + bodyVO.setLocal_money_bal(UFDouble.ZERO_DBL); + bodyVO.setGroupbalance(UFDouble.ZERO_DBL); + bodyVO.setGlobalbalance(UFDouble.ZERO_DBL); + } + } + } + } + + } + + public static void resetMoneyBal(AggregatedValueObject[] bills, AggregatedValueObject[] orginBills) { + String pk_billtype = (String)bills[0].getParentVO().getAttributeValue("pk_billtype"); + Map orgingitemMap = new HashMap(); + BaseItemVO[] items = (BaseItemVO[])orginBills[0].getChildrenVO(); + + for(BaseItemVO item : items) { + orgingitemMap.put(item.getPrimaryKey(), item); + } + + if ("F2".equals(pk_billtype) || "F3".equals(pk_billtype)) { + List result = null; + + try { + result = (List)(new BaseDAO()).executeQuery("select pk_recpaytype from fi_recpaytype where dr=0 and isverification<>'Y'", new ColumnListProcessor()); + } catch (DAOException e) { + ExceptionHandler.consume(e); + } + + for(AggregatedValueObject bill : bills) { + CircularlyAccessibleValueObject[] bodyVOs = bill.getChildrenVO(); + + for(CircularlyAccessibleValueObject obj : bodyVOs) { + BaseItemVO bodyVO = (BaseItemVO)obj; + if (result.contains(bodyVO.getPk_recpaytype())) { + bodyVO.setOccupationmny(UFDouble.ZERO_DBL); + bodyVO.setMoney_bal(UFDouble.ZERO_DBL); + bodyVO.setLocal_money_bal(UFDouble.ZERO_DBL); + bodyVO.setGroupbalance(UFDouble.ZERO_DBL); + bodyVO.setGlobalbalance(UFDouble.ZERO_DBL); + } else if (orgingitemMap.get(bodyVO.getPrimaryKey()) != null && result.contains(((BaseItemVO)orgingitemMap.get(bodyVO.getPrimaryKey())).getPk_recpaytype()) && !result.contains(bodyVO.getPk_recpaytype())) { + if ("F2".equals(pk_billtype)) { + bodyVO.setOccupationmny(bodyVO.getMoney_cr()); + bodyVO.setMoney_bal(bodyVO.getMoney_cr()); + bodyVO.setLocal_money_bal(bodyVO.getMoney_cr()); + bodyVO.setGroupbalance(bodyVO.getMoney_cr()); + bodyVO.setGlobalbalance(bodyVO.getMoney_cr()); + } else if ("F3".equals(pk_billtype)) { + bodyVO.setOccupationmny(bodyVO.getMoney_de()); + bodyVO.setMoney_bal(bodyVO.getMoney_de()); + bodyVO.setLocal_money_bal(bodyVO.getMoney_de()); + bodyVO.setGroupbalance(bodyVO.getMoney_de()); + bodyVO.setGlobalbalance(bodyVO.getMoney_de()); + } + } + } + } + } + + } + + public static void checkBill(BaseAggVO[] aggvos, String actionType) throws BusinessException { + if (aggvos != null && aggvos.length != 0) { + for(BaseAggVO aggvo : aggvos) { + if (aggvo != null) { + BaseBillVO bill = (BaseBillVO)aggvo.getParentVO(); + String pk_tradetype = (String)bill.getAttributeValue("pk_tradetype"); + String pk_billtype = (String)bill.getAttributeValue("pk_billtype"); + if (bill.getBillclass().equals(ArapConstant.ARAP_ZF_BILLCLASS) && !StringUtil.isEmpty(pk_tradetype)) { + DjLXVO[] vos = ArapBillPubUtil.queryTradetypeBycodes(pk_billtype, pk_tradetype); + if ("add".equals(actionType) && (vos == null || vos.length == 0)) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1555", (String)null, new String[]{pk_tradetype})); + } + } + } + } + + } + } +} diff --git a/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringAddAfterListenerAction.java b/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringAddAfterListenerAction.java index 626fbf4..34986bc 100644 --- a/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringAddAfterListenerAction.java +++ b/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringAddAfterListenerAction.java @@ -148,7 +148,9 @@ public class GatheringAddAfterListenerAction { } if (MathTool.isDiffSign(ntotalorigmny, data.getPayBillmny())) { - throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0412")); + if(!data.getFirstBillType().equals("30") ) {; + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0412")); + } } } diff --git a/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringUpdateBeforeListener.java b/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringUpdateBeforeListener.java index 24651b9..874335e 100644 --- a/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringUpdateBeforeListener.java +++ b/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringUpdateBeforeListener.java @@ -175,7 +175,9 @@ public class GatheringUpdateBeforeListener implements IBusinessListener { } if (!((UFDouble)balancePaybillMap.get(data.getPayBillRowID())).equals(data.getPayBillmny())) { - throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0612", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + if(!(data.getFirstBillType().equals("30")&&head.getMetaData().getEntityName().equals("so.so_balance")) ) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0612", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + } } }