diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java index abf0d9a..c1def1e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PayBillSaveOperation.java @@ -32,6 +32,11 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme //付款单保存之后 付款标识为被动付款,并且资金计划科目为空,从配置表(shjh_pay_account)携带资金计划科目 DynamicObject[] dataEntities = e.getDataEntities(); for (DynamicObject bill : dataEntities) { + + //携带生单规则分录的业务大类,业务小类,成本中心,利润中心到收款处理单头 + carryCustomer(bill); + SaveServiceHelper.save(new DynamicObject[]{bill}); + // bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(),"cas_paybill"); DynamicObject paymentidentify = bill.getDynamicObject("paymentidentify"); DynamicObject shjhMembersubject = bill.getDynamicObject("shjh_membersubject"); @@ -47,6 +52,49 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme } } + private void carryCustomer(DynamicObject bill){ + String sourcebilltypes = (String) bill.get("sourcebilltype");//源单类型:被动付款入账(bei_intelpay) + if (!"bei_intelpay".equals(sourcebilltypes)) { + return; + } + + String sourcebillnumber = (String)bill.get("sourcebillnumber");//源单编码:被动付款单号(bei_intelpay) + QFilter q1 = new QFilter("billno", QCP.equals, sourcebillnumber); + DynamicObject beiIntelpay = BusinessDataServiceHelper.loadSingle("bei_intelpay", q1.toArray()); + if (null != beiIntelpay) { + String rulename = beiIntelpay.getString("rulename");//适配规则名称 + //根据适配规则名称查询适配规则 (cas_recpayrule) + // 单据:生单/通知规则(shjh_cas_recpayrule_ext) 单据体:入账规则(entryentity) 字段:规则项名称(e_rulesname) + QFilter q2 = new QFilter("entryentity.e_rulesname", QCP.equals, rulename); + DynamicObject rule = BusinessDataServiceHelper.loadSingle("cas_recpayrule",q2.toArray()); + if (null != rule) { + //根据适配规则携带对应分录的业务大类,业务小类,成本中心,利润中心 + DynamicObjectCollection collection = rule.getDynamicObjectCollection("entryentity"); + for (DynamicObject entry : collection) { + if (rulename.equals(entry.getString("e_rulesname"))) { + DynamicObject shjhBizbig = (DynamicObject)bill.get("shjh_bizbig"); + if (null == shjhBizbig) { + bill.set("shjh_bizbig", entry.getDynamicObject("shjh_e_bizbig")); + } + DynamicObject shjhBizsmall = (DynamicObject)bill.get("shjh_bizsmall"); + if (null == shjhBizsmall) { + bill.set("shjh_bizsmall", entry.getDynamicObject("shjh_e_bizsmall")); + } + DynamicObject shjhCostcenter = (DynamicObject)bill.get("shjh_costcenter"); + if (null == shjhCostcenter) { + bill.set("shjh_costcenter", entry.getDynamicObject("shjh_e_cc")); + } + DynamicObject shjhPc = (DynamicObject)bill.get("shjh_pc"); + if (null == shjhPc) { + bill.set("shjh_pc", entry.getDynamicObject("shjh_e_pc")); + } + return; + } + } + } + } + } + private DynamicObject xdMembersubject(DynamicObject bill){ //付款单,系统自动根据配置表(shjh_pay_account)带出资金计划科目 QFilter qFilter = new QFilter("shjh_biztype", QCP.equals,"A");//业务类型:付款 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java index f379a01..1ad852e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecBillSaveOperation.java @@ -43,6 +43,53 @@ public class RecBillSaveOperation extends AbstractOperationServicePlugIn impleme bill.set("shjh_planclass", xdMembersubject(bill)); SaveServiceHelper.save(new DynamicObject[]{bill}); // } + + //携带生单规则分录的业务大类,业务小类,成本中心,利润中心到收款处理单头 + carryCustomer(bill); + SaveServiceHelper.save(new DynamicObject[]{bill}); + } + } + + private void carryCustomer(DynamicObject bill) { + String sourcebilltype = (String) bill.get("sourcebilltype");//源单类型:被动付款入账(bei_intelpay) + if (!"bei_intelrec".equals(sourcebilltype)) { + return; + } + + String sourcebillnumber = (String) bill.get("sourcebillnumber");//源单编码:被动付款单号(bei_intelpay) + QFilter q1 = new QFilter("billno", QCP.equals, sourcebillnumber); + DynamicObject beiIntelpay = BusinessDataServiceHelper.loadSingle("bei_intelrec", q1.toArray()); + if (null != beiIntelpay) { + String rulename = beiIntelpay.getString("rulename");//适配规则名称 + //根据适配规则名称查询适配规则 (cas_recpayrule) + // 单据:生单/通知规则(shjh_cas_recpayrule_ext) 单据体:入账规则(entryentity) 字段:规则项名称(e_rulesname) + QFilter q2 = new QFilter("entryentity.e_rulesname", QCP.equals, rulename); + DynamicObject rule = BusinessDataServiceHelper.loadSingle("cas_recpayrule", q2.toArray()); + if (null != rule) { + //根据适配规则携带对应分录的业务大类,业务小类,成本中心,利润中心 + DynamicObjectCollection collection = rule.getDynamicObjectCollection("entryentity"); + for (DynamicObject entry : collection) { + if (rulename.equals(entry.getString("e_rulesname"))) { + DynamicObject shjhBizbig = (DynamicObject) bill.get("shjh_bizebig"); + if (null == shjhBizbig) { + bill.set("shjh_bizebig", entry.getDynamicObject("shjh_e_bizbig")); + } + DynamicObject shjhBizsmall = (DynamicObject) bill.get("shjh_bizsmall"); + if (null == shjhBizsmall) { + bill.set("shjh_bizsmall", entry.getDynamicObject("shjh_e_bizsmall")); + } + DynamicObject shjhCostcenter = (DynamicObject) bill.get("shjh_costcenter"); + if (null == shjhCostcenter) { + bill.set("shjh_costcenter", entry.getDynamicObject("shjh_e_cc")); + } + DynamicObject shjhPc = (DynamicObject) bill.get("shjh_profitcenter"); + if (null == shjhPc) { + bill.set("shjh_profitcenter", entry.getDynamicObject("shjh_e_pc")); + } + return; + } + } + } } }