销售订单客户与收款单客户不一致取消校验
This commit is contained in:
parent
9901f045eb
commit
d5c85788d9
|
@ -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<String> 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<String> 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<String> addAllowDelNotAllowRows = Arrays.asList("F0", "F1", "F2", "F3");
|
||||||
|
final List<String> delAllowAddNotAllowRows = Arrays.asList("36D1");
|
||||||
|
final List<String> firstEditableFields = Arrays.asList("36D1");
|
||||||
|
final List<String> 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<BaseItemVO> 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<BaseItemVO> 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<String, Map<String, Object[]>> 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<String, Object[]> 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<String> 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<String> ctrlPROJECT = Arrays.asList("4D39", "4D83", "4D48", "4D50", "4D60", "4D62", "4D46", "4D65", "4D33", "4D86", "4D53");
|
||||||
|
List<String> ctrlCONTRACTNO = Arrays.asList("4D39", "4D62", "4D48", "4D50");
|
||||||
|
List<String> ctrlMATERIAL = Arrays.asList("4D50", "4D48", "4D83", "4D53", "4D65", "4D33", "4D86");
|
||||||
|
List<String> 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<String, Object[]> 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<String, List<String>> 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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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<String, IDataFromF2ForM30> organizeDataMap(IDataFromF2ForM30[] datas) {
|
||||||
|
Map<String, IDataFromF2ForM30> retMap = new HashMap();
|
||||||
|
|
||||||
|
for(IDataFromF2ForM30 data : datas) {
|
||||||
|
retMap.put(data.getPayBillRowID(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return retMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, SoBalanceVO> organizeBalanceMap(SoBalanceVO[] vos) {
|
||||||
|
Map<String, SoBalanceVO> 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<String, IDataFromF2ForM30> 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<SoBalanceViewVO, SoBalanceVO> convert = new ViewToBillConvertor(SoBalanceVO.class);
|
||||||
|
SoBalanceVO[] vos = (SoBalanceVO[])convert.convert(views);
|
||||||
|
if (vos != null && vos.length != 0) {
|
||||||
|
Map<String, SoBalanceVO> balanceMap = this.organizeBalanceMap(vos);
|
||||||
|
this.checkDatas(datas, balanceMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkDatas(IDataFromF2ForM30[] datas, Map<String, SoBalanceVO> balanceMap) throws BusinessException {
|
||||||
|
StringBuffer errMsg = new StringBuffer();
|
||||||
|
List<IDataFromF2ForM30> deleteList = new ArrayList();
|
||||||
|
List<IDataFromF2ForM30> 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<String> list = new ArrayList();
|
||||||
|
Map<String, String> map = new HashMap();
|
||||||
|
Map<String, String> map2 = new HashMap();
|
||||||
|
Map<String, String> 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<SaleOrderHVO> 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<String, String> map) throws BusinessException {
|
||||||
|
Map<String, UFDouble> 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())}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue