diff --git a/arap/src/public/nc/bs/arap/busireg/ArapBillUpdateChecker.java b/arap/src/public/nc/bs/arap/busireg/ArapBillUpdateChecker.java new file mode 100644 index 0000000..3630976 --- /dev/null +++ b/arap/src/public/nc/bs/arap/busireg/ArapBillUpdateChecker.java @@ -0,0 +1,328 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.bs.arap.busireg; + +import java.sql.SQLException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import nc.bs.arap.bill.ArapBillDAO; +import nc.bs.arap.util.ArapVOUtils; +import nc.bs.dao.DAOException; +import nc.bs.pf.pub.PfDataCache; +import nc.vo.arap.basebill.BaseAggVO; +import nc.vo.arap.basebill.BaseBillVO; +import nc.vo.arap.basebill.BaseItemVO; +import nc.vo.arap.pay.PayBillVO; +import nc.vo.arap.pub.BillEnumCollection.CommissionPayType; +import nc.vo.arap.pub.BillEnumCollection.ObjType; +import nc.vo.arap.utils.StringUtil; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pub.lang.UFDouble; + +public class ArapBillUpdateChecker implements BillUpdateChecker { + final List jckBillTypes = Arrays.asList("5801", "5818"); + final String STUFF_SETTLE_BILL = "4D39"; + final String EXPENSES_SETTLE_BILL = "4D83"; + final String PLAN_MONEY_BILL = "4D48"; + final String PROJECT_SETTLE_BILL = "4D50"; + final String SELL_CONTRACT_BILL = "4D60"; + final String GATHERING_PLAN_BILL = "4D62"; + final String PREPAY_BILL = "4D46"; + final String CONTRACT_BILL = "4D65"; + final String VISACONFIRM_BILL = "4D33"; + final String DEDUCTIONS_BILL = "4D86"; + final String REGISTRATION_BILL = "4D53"; + final String SELL_EXPENSES_BILL = "35"; + final String BILLTYPE_36S3 = "36S3"; + final String BILLTYPE_5F = "5F"; + final List immutableRows = Arrays.asList("5790", "5760", "5820", "6090", "5818", "4A2F", "4A3F", "4BL0", "4BL3", "4A3H", "4A77", "4A87", "21", "2201", "36J3", "4D46", "264X", "35", "4D39", "4D83", "4D48", "4D50", "4D60", "4D62", "4D46", "5F"); + final List addAllowDelNotAllowRows = Arrays.asList("F0", "F1", "F2", "F3"); + final List delAllowAddNotAllowRows = Arrays.asList("36D1"); + final List firstEditableFields = Arrays.asList("36D1"); + final List secondEditableFields = Arrays.asList("264X", "264x"); + + public ArapBillUpdateChecker() { + } + + public boolean isMatch(BaseAggVO vo) { + return true; + } + + public boolean canUpdateBillWithoutCtrl(BaseAggVO vo) { + BaseItemVO[] vosNew = (BaseItemVO[])vo.getChildrenVO(); + String top_billtype = vosNew[0].getTop_billtype(); + return "5720".equals(top_billtype) || "4B36".equals(top_billtype); + } + + public String canAddLine(String top_billtype, List addlines) { + return top_billtype != null && this.immutableRows.contains(top_billtype) ? NCLangRes4VoTransl.getNCLangRes().getStrByID("2006arappub0316_0", "02006arappub0316-0027", (String)null, new String[]{PfDataCache.getBillType(top_billtype).getBilltypenameOfCurrLang()}) : null; + } + + public String canDeleteLine(String top_billtype, List deletelines) { + boolean flag = true; + if (top_billtype != null && this.immutableRows.contains(top_billtype)) { + flag = false; + } + + return !flag ? NCLangRes4VoTransl.getNCLangRes().getStrByID("2006arappub0316_0", "02006arappub0316-0026", (String)null, new String[]{PfDataCache.getBillType(top_billtype).getBilltypenameOfCurrLang()}) : null; + } + + public String canUpdateBodyFieldValue(Map> fieldvalue, BaseAggVO aggvo, BaseAggVO oldaggvo) { + BaseBillVO billvo = (BaseBillVO)aggvo.getParentVO(); + BaseItemVO[] vosNew = (BaseItemVO[])aggvo.getChildrenVO(); + boolean otherSystemPushBill = ArapVOUtils.isOtherSystemPushBill(billvo, vosNew[0].getTop_billtype()); + UFBoolean sddreversalflag = UFBoolean.FALSE; + if (billvo instanceof PayBillVO) { + sddreversalflag = ((PayBillVO)billvo).getSddreversalflag(); + if (null == sddreversalflag) { + sddreversalflag = UFBoolean.FALSE; + } + } + + if (!otherSystemPushBill && !sddreversalflag.booleanValue()) { + return null; + } else { + String errmsg = null; + + for(BaseItemVO vo : vosNew) { + Map valuechangeMap = (Map)fieldvalue.get(vo.getPrimaryKey()); + if (vo.getPrimaryKey() != null && valuechangeMap != null && !valuechangeMap.isEmpty() && vo.getTop_billid() != null) { + String topBilltype = vo.getTop_billtype(); + if (this.firstEditableFields.contains(topBilltype)) { + break; + } + + String[] s1 = new String[]{"objtype", "pk_currtype", "money_de", "money_cr", "groupdebit", "groupcrebit", "groupnotax_cre", "groupnotax_de", "payaccount", "recaccount", "matcustcode"}; + String[] s2 = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001935"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001755"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004112"), NCLangRes4VoTransl.getNCLangRes().getStrByID("2006v61008_0", "02006v61008-0301"), NCLangRes4VoTransl.getNCLangRes().getStrByID("2006v61008_0", "02006v61008-0302"), NCLangRes4VoTransl.getNCLangRes().getStrByID("receivablebill", "2receive-000119")}; + List list = Arrays.asList("money_de", "money_cr", "groupdebit", "groupcrebit", "groupnotax_cre", "groupnotax_de"); + int t = -1; + + for(String s : s1) { + ++t; + Object[] values = valuechangeMap.get(s); + if (values != null) { + Object newvalue = values[0]; + Object oldvalue = values[1]; + if ((!s.equals("payaccount") && !s.equals("recaccount") || oldvalue != null && oldvalue.toString().length() == 20) && (!list.contains(s) || !"FCT1".equals(topBilltype)) && !"FCT2".equals(topBilltype) && !"36U5".equals(topBilltype) && (!list.contains(s) || !"36S3".equals(topBilltype)) && (!s.equals("matcustcode") || !"434C".equals(topBilltype) || !"23E0".equals(vo.getPk_billtype())) && (oldvalue != null || newvalue == null) && (!(vo.getAttributeValue(s) instanceof UFDouble) || (vo.getCommpaytype() == null || !CommissionPayType.REFUSECOMMPAY.VALUE.equals(vo.getCommpaytype()) && !CommissionPayType.COMMPAYPARTLY.VALUE.equals(vo.getCommpaytype())) && !this.jckBillTypes.contains(topBilltype))) { + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{s2[t]}); + break; + } + } + } + + if (!StringUtil.isEmpty(errmsg) || this.secondEditableFields.contains(topBilltype)) { + break; + } + + String[] s3 = new String[]{"customer", "supplier", "pk_deptid", "pk_psndoc"}; + String[] s4 = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001589"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0000275"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0004064"), NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0340")}; + int[] s5 = new int[]{ObjType.CUSTOMER.VALUE, ObjType.SUPPLIER.VALUE, ObjType.DEP.VALUE, ObjType.PERSON.VALUE}; + int m = -1; + + for(int s : s5) { + ++m; + if (vo.getObjtype() == s) { + Object[] values = valuechangeMap.get(s3[m]); +// if(vo.getMetaData().getEntityName().equals("arap.gatheritem") && vo.getSrc_billtype().equals("30") && s3[m].equals("customer")){ +// break; +// } + if (values != null) { + Object oldvalue = values[1]; + if (oldvalue != null && oldvalue.toString().length() == 20) { + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{s4[m]}); + break; + } + } + } + } + + if (!StringUtil.isEmpty(errmsg)) { + break; + } + + List ctrlPROJECT = Arrays.asList("4D39", "4D83", "4D48", "4D50", "4D60", "4D62", "4D46", "4D65", "4D33", "4D86", "4D53"); + List ctrlCONTRACTNO = Arrays.asList("4D39", "4D62", "4D48", "4D50"); + List ctrlMATERIAL = Arrays.asList("4D50", "4D48", "4D83", "4D53", "4D65", "4D33", "4D86"); + List ctrlPROJECT_TASK = Arrays.asList("4D83", "4D46", "4D48", "4D50", "4D39"); + if (ctrlPROJECT.contains(topBilltype)) { + Object[] values = valuechangeMap.get("project"); + if (values != null) { + String projectLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-001021"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{projectLang}); + break; + } + + values = valuechangeMap.get("CBS"); + if (values != null) { + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{"CBS"}); + break; + } + + if (ctrlCONTRACTNO.contains(topBilltype)) { + values = valuechangeMap.get("contractno"); + if (values != null) { + String contractnoLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000234"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{contractnoLang}); + break; + } + } + + if (ctrlMATERIAL.contains(topBilltype)) { + values = valuechangeMap.get("material"); + if (values != null) { + String materialLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000594"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{materialLang}); + break; + } + } + + if (ctrlPROJECT_TASK.contains(topBilltype)) { + values = valuechangeMap.get("project_task"); + if (values != null) { + String project_taskLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-001023"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{project_taskLang}); + break; + } + } + + if ("4D50".equals(topBilltype)) { + values = valuechangeMap.get("pk_payterm"); + if (values != null) { + String pk_paytermLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000055"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{pk_paytermLang}); + break; + } + + values = valuechangeMap.get("busidate"); + if (values != null) { + String busidateLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000946"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{busidateLang}); + break; + } + } + + if ("4D46".equals(topBilltype)) { + values = valuechangeMap.get("prepay"); + if (values != null) { + String scommentLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000011"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{scommentLang}); + break; + } + } + + if ("4D60".equals(topBilltype)) { + values = valuechangeMap.get("scomment"); + if (values != null) { + String scommentLang = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000426"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{scommentLang}); + break; + } + } + } + + if (sddreversalflag.booleanValue()) { + String[] s6 = new String[]{"rate", "grouprate", "globalrate", "local_money_de", "groupdebit", "globaldebit", "sett_org", "pk_org", "pk_balatype", "invoiceno"}; + String[] s7 = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000699"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-001016"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000119"), NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000013"), NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000007"), NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000005"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000715"), NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000028"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000712"), NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "2UC000-000220")}; + int n = -1; + + for(String s : s6) { + ++n; + Object[] values = valuechangeMap.get(s); + if (values != null) { + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{s7[n]}); + break; + } + } + + String[] ctrlFieldFromOtherSys = new String[]{"pk_recpaytype"}; + String[] ctrlFieldFromOtherSysName = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000126")}; + String[] ctrlFieldFromOtherSysNameGat = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("gatherbill", "2gather-000127")}; + String pk_billtype = vo.getPk_billtype(); + if ("36S3".equals(topBilltype)) { + for(String fiel : ctrlFieldFromOtherSys) { + Object[] values = valuechangeMap.get(fiel); + if (values != null) { + String fieldName = "F2".equals(pk_billtype) ? ctrlFieldFromOtherSysNameGat[n] : ctrlFieldFromOtherSysName[n]; + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1355", (String)null, new String[]{fieldName}); + break; + } + } + } + + if (!StringUtil.isEmpty(errmsg)) { + break; + } + } + } + } + + return errmsg; + } + } + + public String canUpdateHeadFieldValue(Map fieldvalue, BaseAggVO vo, BaseAggVO oldvo) { + BaseBillVO billvo = (BaseBillVO)vo.getParentVO(); + BaseItemVO[] vosNew = (BaseItemVO[])vo.getChildrenVO(); + boolean otherSystemPushBill = ArapVOUtils.isOtherSystemPushBill(billvo, vosNew[0].getTop_billtype()); + boolean isRedbill = ArapVOUtils.isArapRedBill(billvo, vosNew[0].getTop_billtype()); + String errmsg = null; + if (isRedbill) { + String billtype = vo.getHeadVO().getPk_billtype(); + String topitsm = (String)vo.getChildrenVO()[0].getAttributeValue("top_itemid"); + String[] pks = new String[]{topitsm}; + Map> billFieldBypk = new HashMap(); + + try { + billFieldBypk = (new ArapBillDAO()).getBillFieldBypk(pks, billtype, Arrays.asList("pk_currtype"), (List)null); + } catch (SQLException | DAOException e) { + errmsg = ((Exception)e).getMessage(); + } + + String topcurr = (String)((List)billFieldBypk.get(topitsm)).get(0); + String pk_curr = (String)vo.getChildrenVO()[0].getAttributeValue("pk_currtype"); + if (!StringUtil.isEmptyWithTrim(topcurr) && !topcurr.equals(pk_curr)) { + String currtype = NCLangRes4VoTransl.getNCLangRes().getStrByID("common", "UC000-0001755"); + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-1330", (String)null, new String[]{currtype}); + } + } + + UFBoolean sddreversalflag = UFBoolean.FALSE; + if (billvo instanceof PayBillVO) { + sddreversalflag = ((PayBillVO)billvo).getSddreversalflag(); + if (null == sddreversalflag) { + sddreversalflag = UFBoolean.FALSE; + } + } + + if (!otherSystemPushBill && !sddreversalflag.booleanValue()) { + return null; + } else { + if (sddreversalflag.booleanValue()) { + String[] s1 = new String[]{"expectdealdate"}; + String[] s2 = new String[]{NCLangRes4VoTransl.getNCLangRes().getStrByID("paybill", "2paybill-000108")}; + int n = -1; + + for(String s : s1) { + ++n; + Object[] values = fieldvalue.get(s); + if (values != null) { + errmsg = NCLangRes4VoTransl.getNCLangRes().getStrByID("2006pub_0", "02006pub-0432", (String)null, new String[]{s2[n]}); + break; + } + } + } + + return errmsg; + } + } + + public boolean excuteDefaultCheck() { + return false; + } +} 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 new file mode 100644 index 0000000..ab99e67 --- /dev/null +++ b/so/src/private/nc/pubimpl/so/sobalance/arap/listener/GatheringUpdateBeforeListener.java @@ -0,0 +1,179 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package nc.pubimpl.so.sobalance.arap.listener; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import nc.bs.businessevent.IBusinessEvent; +import nc.bs.businessevent.IBusinessListener; +import nc.bs.ml.NCLangResOnserver; +import nc.impl.pubapp.bill.convertor.ViewToBillConvertor; +import nc.impl.pubapp.pattern.data.vo.VOQuery; +import nc.itf.arap.forso.IDataFromF2ForM30; +import nc.pubitf.arap.pub.GetSODataByArapUtils; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.BusinessException; +import nc.vo.pub.lang.UFDouble; +import nc.vo.so.m30.entity.SaleOrderHVO; +import nc.vo.so.m30.sobalance.entity.SoBalanceBVO; +import nc.vo.so.m30.sobalance.entity.SoBalanceHVO; +import nc.vo.so.m30.sobalance.entity.SoBalanceVO; +import nc.vo.so.m30.sobalance.entity.SoBalanceViewVO; +import nc.vo.so.m30.sobalance.enumeration.SoBalanceType; + +public class GatheringUpdateBeforeListener implements IBusinessListener { + public GatheringUpdateBeforeListener() { + } + + private Map organizeDataMap(IDataFromF2ForM30[] datas) { + Map retMap = new HashMap(); + + for(IDataFromF2ForM30 data : datas) { + retMap.put(data.getPayBillRowID(), data); + } + + return retMap; + } + + private Map organizeBalanceMap(SoBalanceVO[] vos) { + Map balanceMap = new HashMap(); + if (vos != null && vos.length > 0) { + for(SoBalanceVO vo : vos) { + SoBalanceBVO[] bodys = vo.getChildrenVO(); + + for(SoBalanceBVO body : bodys) { + balanceMap.put(body.getCpaybillrowid(), vo); + } + } + } + + return balanceMap; + } + + public void doAction(IBusinessEvent event) throws BusinessException { + IDataFromF2ForM30[] datas = (new GetSODataByArapUtils()).getIDataFromF2ForM30(event); + Map dataMap = this.organizeDataMap(datas); + String[] payBillRowIDs = (String[])dataMap.keySet().toArray(new String[dataMap.keySet().size()]); + if (payBillRowIDs != null && payBillRowIDs.length != 0) { + SoBalanceViewVO[] views = ArListenerUtils.getInstance().querySoBalanceViewByGatheringBillBodyIDs(payBillRowIDs); + ViewToBillConvertor convert = new ViewToBillConvertor(SoBalanceVO.class); + SoBalanceVO[] vos = (SoBalanceVO[])convert.convert(views); + if (vos != null && vos.length != 0) { + Map balanceMap = this.organizeBalanceMap(vos); + this.checkDatas(datas, balanceMap); + } + } + } + + private void checkDatas(IDataFromF2ForM30[] datas, Map balanceMap) throws BusinessException { + StringBuffer errMsg = new StringBuffer(); + List deleteList = new ArrayList(); + List updateList = new ArrayList(); + + for(IDataFromF2ForM30 data : datas) { + if (3 == data.getRowStatus()) { + deleteList.add(data); + } else if (1 == data.getRowStatus()) { + updateList.add(data); + } + } + + if (deleteList.size() > 0) { + IDataFromF2ForM30[] deleteDatas = (IDataFromF2ForM30[])deleteList.toArray(new IDataFromF2ForM30[deleteList.size()]); + + for(IDataFromF2ForM30 data : deleteDatas) { + if (balanceMap.containsKey(data.getPayBillRowID())) { + String payBillNo = data.getPayBillNo(); + String billRowID = ((SoBalanceVO)balanceMap.get(data.getPayBillRowID())).getParentVO().getVbillcode(); + errMsg.append(NCLangResOnserver.getInstance().getStrByID("4006011_0", "04006011-0363", (String)null, new String[]{payBillNo, billRowID})); + errMsg.append("\n"); + } + } + } + + if (updateList.size() > 0) { + IDataFromF2ForM30[] updateDatas = (IDataFromF2ForM30[])updateList.toArray(new IDataFromF2ForM30[updateList.size()]); + List list = new ArrayList(); + Map map = new HashMap(); + Map map2 = new HashMap(); + Map map3 = new HashMap(); + + for(String payBillRowid : balanceMap.keySet()) { + map.put(((SoBalanceVO)balanceMap.get(payBillRowid)).getParentVO().getCsobalanceid(), ((SoBalanceVO)balanceMap.get(payBillRowid)).getParentVO().getCsaleorderid()); + list.add(((SoBalanceVO)balanceMap.get(payBillRowid)).getParentVO().getCsaleorderid()); + } + + VOQuery voQuery = new VOQuery(SaleOrderHVO.class); + SaleOrderHVO[] heads = (SaleOrderHVO[])voQuery.query((String[])list.toArray(new String[list.size()])); + if (heads == null || heads.length == 0) { + return; + } + + for(int i = 0; i < heads.length; ++i) { + map2.put(heads[i].getCsaleorderid(), heads[i].getVbillcode()); + } + + for(String string : map.keySet()) { + map3.put(string, (String)map2.get(map.get(string))); + } + + for(IDataFromF2ForM30 data : updateDatas) { + if (balanceMap.containsKey(data.getPayBillRowID())) { + SoBalanceVO sbVO = (SoBalanceVO)balanceMap.get(data.getPayBillRowID()); + this.checkGatheringbillAndSoBalanceConsistent(data, sbVO, map3); + } + } + } + + if (errMsg.length() > 0) { + throw new BusinessException(errMsg.toString()); + } + } + + private void checkGatheringbillAndSoBalanceConsistent(IDataFromF2ForM30 data, SoBalanceVO sbVO, Map map) throws BusinessException { + Map balancePaybillMap = new HashMap(); + SoBalanceHVO head = sbVO.getParentVO(); + String ccustomerid = head.getCcustomerid(); + String cinvoicecustid = head.getCinvoicecustid(); + String corigcurrencyid = head.getCorigcurrencyid(); + String carorgid = head.getCarorgid(); + SoBalanceBVO[] bodys = sbVO.getChildrenVO(); + int fibaltype = 1; + + for(SoBalanceBVO body : bodys) { + balancePaybillMap.put(body.getCpaybillrowid(), body.getNorigarmny()); + if (body.getCpaybillrowid().equals(data.getPayBillRowID())) { + fibaltype = body.getFibaltype(); + break; + } + } + + if (SoBalanceType.SOBALANCE_ORDERBAL.getIntValue() == fibaltype) { + if (!ccustomerid.equals(data.getPayBillOrderCust())) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0193", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + } + + if (!cinvoicecustid.equals(data.getPayBillCustomer())) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0194", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + } + + if (!corigcurrencyid.equals(data.getPayBillCurID())) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0195", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + } + + if (!carorgid.equals(data.getPayBillOrg())) { + throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0196", (String)null, new String[]{(String)map.get(head.getCsobalanceid())})); + } + + 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())})); + } + } + + } +}