-凭证推送,凭证类型赋值(PaybillPushSapOperation,RecPushVoucherOperation)

s
This commit is contained in:
weiyunlong 2025-04-30 14:09:13 +08:00
parent efa767d3cf
commit 84ee631a3f
2 changed files with 12 additions and 8 deletions

View File

@ -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) {

View File

@ -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) {