From 84ee631a3f3e1a74eaf299b7a5a9090694b97979 Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Wed, 30 Apr 2025 14:09:13 +0800 Subject: [PATCH] =?UTF-8?q?-=E5=87=AD=E8=AF=81=E6=8E=A8=E9=80=81,=E5=87=AD?= =?UTF-8?q?=E8=AF=81=E7=B1=BB=E5=9E=8B=E8=B5=8B=E5=80=BC(PaybillPushSapOpe?= =?UTF-8?q?ration,RecPushVoucherOperation)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit s --- .../fi/fi/plugin/operate/PaybillPushSapOperation.java | 11 +++++++---- .../fi/fi/plugin/operate/RecPushVoucherOperation.java | 9 +++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java index 1763ac2..9a820fd 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/PaybillPushSapOperation.java @@ -90,9 +90,10 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl //todo:付款单是由票据直接生成,凭证如何推送 JSONObject data = new JSONObject(); //抬头 - data.put("IS_HEADER", getIS_HEADER(bill)); + JSONObject isHeader = getIS_HEADER(bill); + data.put("IS_HEADER", isHeader); //金蝶生成的凭证信息 - data.put("IT_ITEM", getIT_ITEM(bill)); + data.put("IT_ITEM", getIT_ITEM(bill, isHeader)); Boolean isqingdan = true; //来源系统SAP时,清账(SAP凭证数据) if ("A".equals(shjhSourcesystem)) { @@ -175,7 +176,7 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl return IS_HEADER; } - private JSONArray getIT_ITEM(DynamicObject bill) { + private JSONArray getIT_ITEM(DynamicObject bill , JSONObject IS_HEADER) { String shjhSourcesystem = bill.getString("shjh_sourcesystem");//来源系统 //客户(bd_customer)||供应商(bd_supplier) 收款人id:payee String payeetype = bill.getString("payeetype");//收款人类型 @@ -215,9 +216,11 @@ public class PaybillPushSapOperation extends AbstractOperationServicePlugIn impl QFilter q1 = new QFilter("sourcebill", QCP.equals, bill.getPkValue()); QFilter q2 = new QFilter("billstatus",QCP.equals,"C"); DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher", - "id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc", + "id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc,vouchertype", new QFilter[]{q1, q2}); if (null != gl_voucher) { + //todo:对header 凭证类型重新赋值 + IS_HEADER.put("BLART", gl_voucher.getString("vouchertype.number"));//凭证类型 DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries"); if (!entries.isEmpty()) { for (DynamicObject entry : entries) { diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java index f146b52..8d05d08 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/RecPushVoucherOperation.java @@ -143,14 +143,14 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl JSONObject json_HEADER = getIS_HEADER(recBill); data.put("IS_HEADER", json_HEADER); //详细,参考《IT_ITEM》 - JSONArray itItem = getIT_ITEM(recBill); + JSONArray itItem = getIT_ITEM(recBill,json_HEADER); if (itItem == null){ this.getOperationResult().setSuccess(false);//成功true;失败false this.getOperationResult().setMessage("金蝶凭证不存在或未审核"); // 提示内容 this.getOperationResult().setShowMessage(true); // 是否显示提示消息 continue; } - data.put("IT_ITEM", getIT_ITEM(recBill)); + data.put("IT_ITEM", getIT_ITEM(recBill,json_HEADER)); //收款类型=推预付款、员工还款需要传清账数据 String receivingType = recBill.getString("receivingtype.number"); if ("103".equals(receivingType) || "109".equals(receivingType)) { @@ -299,7 +299,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl * @param recBill 收款单动态对象 * @return 包含行项目信息的JSONArray */ - private JSONArray getIT_ITEM(DynamicObject recBill) { + private JSONArray getIT_ITEM(DynamicObject recBill , JSONObject json_HEADER) { JSONArray IT_ITEM = new JSONArray(); //源单类型 String sourceBillType = recBill.getString("sourcebilltype"); @@ -336,10 +336,11 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl QFilter voucherFilters = new QFilter("sourcebill", QCP.equals, recBill.getPkValue()); voucherFilters.and(new QFilter("billstatus",QCP.equals,"C"));//已审核 DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher", - "id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc", + "id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc,vouchertype", voucherFilters.toArray()); if (gl_voucher != null) { + json_HEADER.put("BLART", gl_voucher.getString("vouchertype.number"));//凭证类型 DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries"); if (entries != null && !entries.isEmpty()) { for (DynamicObject entry : entries) {