收款处理-汇票凭证推送
This commit is contained in:
parent
d9dff33b09
commit
be2728441b
|
|
@ -0,0 +1,236 @@
|
||||||
|
package shjh.jhzj7.fi.fi.plugin.operate;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.dataentity.utils.StringUtils;
|
||||||
|
import kd.bos.entity.ExtendedDataEntity;
|
||||||
|
import kd.bos.entity.formula.RowDataModel;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
import kd.bos.entity.validate.AbstractValidator;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
|
import kd.bos.orm.query.QCP;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.sdk.plugin.Plugin;
|
||||||
|
import scala.Array;
|
||||||
|
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据操作插件
|
||||||
|
* 票据业务处理-推送SAP凭证接口-弃用
|
||||||
|
*/
|
||||||
|
public class DraPushVoucherOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
|
||||||
|
private final static Log logger = LogFactory.getLog(DraPushVoucherOperation.class);
|
||||||
|
|
||||||
|
private static final String INTERFACE_ID = "FinancialTransactionVoucher";//识别被调接口并进行路由-凭证
|
||||||
|
|
||||||
|
private static final String RECEIVER_ID = "SAP";//定义的发送者
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作标识
|
||||||
|
*/
|
||||||
|
private static final String KEY_PUSH_VOUCHER = "pushvoucher";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作执行前,准备加载单据数据之前,触发此事件
|
||||||
|
*
|
||||||
|
* @remark 插件可以在此事件中,指定需要加载的字段
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
e.getFieldKeys().add(PushVoucherValidator.KEY_IS_VOUCHER);
|
||||||
|
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_STATUS);
|
||||||
|
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_NUMBER);
|
||||||
|
e.getFieldKeys().add(PushVoucherValidator.KEY_IS_PUSH_SAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行操作校验前,触发此事件
|
||||||
|
*
|
||||||
|
* @remark 插件可以在此事件,调整预置的操作校验器;或者增加自定义操作校验器
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||||
|
super.onAddValidators(e);
|
||||||
|
//添加自定义校验器:1.单据状态=已审核 2.生成凭证(金蝶)=true 3.是否已推送SAP=false
|
||||||
|
e.addValidator(new RebReversalFiOperation.ReversalValidator());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义校验器
|
||||||
|
*/
|
||||||
|
static class PushVoucherValidator extends AbstractValidator {
|
||||||
|
/**
|
||||||
|
* 单据编码
|
||||||
|
*/
|
||||||
|
public final static String KEY_BILL_NUMBER = "billno";
|
||||||
|
/**
|
||||||
|
* 单据状态
|
||||||
|
*/
|
||||||
|
public final static String KEY_BILL_STATUS = "billstatus";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否已推送SAP
|
||||||
|
*/
|
||||||
|
public final static String KEY_IS_PUSH_SAP = "shjh_ispushsap";
|
||||||
|
/**
|
||||||
|
* 是否已生成凭证
|
||||||
|
*/
|
||||||
|
public final static String KEY_IS_VOUCHER = "isvoucher";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
//取数模型
|
||||||
|
RowDataModel rowDataModel = new RowDataModel(this.entityKey, this.getValidateContext().getSubEntityType());
|
||||||
|
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||||
|
if (dataEntities != null && dataEntities.length >= 1) {
|
||||||
|
for (ExtendedDataEntity dataEntity : dataEntities) {
|
||||||
|
if (dataEntity != null) {
|
||||||
|
rowDataModel.setRowContext(dataEntity.getDataEntity());
|
||||||
|
String billNo = (String) rowDataModel.getValue(KEY_BILL_NUMBER);
|
||||||
|
String type = (String) rowDataModel.getValue(KEY_BILL_STATUS);
|
||||||
|
if (!"C".equals(type)) {
|
||||||
|
this.addErrorMessage(dataEntity, "【" + billNo + "】未审核,无法推送。");
|
||||||
|
}
|
||||||
|
boolean result = (boolean) rowDataModel.getValue(KEY_IS_PUSH_SAP);
|
||||||
|
if (result) {
|
||||||
|
this.addErrorMessage(dataEntity, "【" + billNo + "】已推送SAP,请勿重复推送。");
|
||||||
|
}
|
||||||
|
boolean isVoucher = (boolean) rowDataModel.getValue(KEY_IS_VOUCHER);
|
||||||
|
if (!isVoucher) {
|
||||||
|
this.addErrorMessage(dataEntity, "【" + billNo + "】未生成金蝶凭证,无法推送。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
|
String operationKey = e.getOperationKey();
|
||||||
|
if (StringUtils.equals(KEY_PUSH_VOUCHER, operationKey)) {
|
||||||
|
DynamicObject[] dataEntities = e.getDataEntities();
|
||||||
|
if (dataEntities != null && dataEntities.length >= 1) {
|
||||||
|
for (DynamicObject dataEntity : dataEntities) {
|
||||||
|
DynamicObject draftTradeBill = BusinessDataServiceHelper.loadSingle(dataEntity.getLong("id"), "cdm_drafttradebill");
|
||||||
|
if (null != draftTradeBill) {
|
||||||
|
//组装data
|
||||||
|
HashMap<String, Object> data = new HashMap<>();
|
||||||
|
HashMap<String, Object> IS_HEADER = new HashMap<>();
|
||||||
|
// 使用线程安全的日期格式化
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
// 公司代码-资金组织
|
||||||
|
IS_HEADER.put("BUKRS", draftTradeBill.getString("company.number"));
|
||||||
|
// 凭证类型
|
||||||
|
IS_HEADER.put("BLART", "DX");
|
||||||
|
// 凭证日期
|
||||||
|
Date bizDate = draftTradeBill.getDate("bizdate");
|
||||||
|
IS_HEADER.put("BLDAT", bizDate != null ? format.format(bizDate) : "");
|
||||||
|
// 过账日期
|
||||||
|
Date payeeDate = draftTradeBill.getDate("payeedate");
|
||||||
|
IS_HEADER.put("BUDAT", payeeDate != null ? format.format(payeeDate) : "");
|
||||||
|
// 币种
|
||||||
|
DynamicObject currency = draftTradeBill.getDynamicObject("currency");
|
||||||
|
String isoCode = currency != null ? currency.getString("number") : "";
|
||||||
|
IS_HEADER.put("WAERS", JhzjUtils.getCurrencyCode(isoCode));
|
||||||
|
// 参考凭证号
|
||||||
|
IS_HEADER.put("XBLNR", draftTradeBill.getString("billno"));
|
||||||
|
// 凭证抬头文本-被背书人
|
||||||
|
IS_HEADER.put("BKTXT", draftTradeBill.getString("beendorsortext"));
|
||||||
|
// 固定值
|
||||||
|
IS_HEADER.put("USNAM", "资金系统");
|
||||||
|
//被背书人类型
|
||||||
|
String number="";
|
||||||
|
String payeeType = draftTradeBill.getString("payeetypetext");
|
||||||
|
if (payeeType!=null){
|
||||||
|
DynamicObject beendorsor = draftTradeBill.getDynamicObject("beendorsor");
|
||||||
|
if(beendorsor!=null){
|
||||||
|
number=beendorsor.getString("number");
|
||||||
|
switch (payeeType){
|
||||||
|
case "bd_customer":
|
||||||
|
IS_HEADER.put("KUNNR", number); // 客户编号
|
||||||
|
break;
|
||||||
|
case "bd_supplier":
|
||||||
|
IS_HEADER.put("LIFNR", number); // 供应商编号
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IS_HEADER.put("ZUONR", ""); // 分配编号
|
||||||
|
data.put("data", IS_HEADER);
|
||||||
|
List<HashMap<String, Object>> IT_ITEM = new ArrayList<>();
|
||||||
|
DynamicObject gl_voucher = BusinessDataServiceHelper.loadSingle("gl_voucher",
|
||||||
|
"id,sourcebill,entries,entries.account,entries.debitlocal,entries.creditlocal,entries.entrydc",
|
||||||
|
new QFilter("sourcebill", QCP.equals, draftTradeBill.getPkValue()).toArray());
|
||||||
|
|
||||||
|
if (gl_voucher != null) {
|
||||||
|
DynamicObjectCollection entries = gl_voucher.getDynamicObjectCollection("entries");
|
||||||
|
if (entries != null && !entries.isEmpty()) {
|
||||||
|
for (DynamicObject entry : entries) {
|
||||||
|
HashMap<String, Object> IT_ITEMS = new HashMap<>();
|
||||||
|
switch (payeeType){
|
||||||
|
case "bd_customer":
|
||||||
|
IT_ITEMS.put("KUNNR", number); // 客户编号
|
||||||
|
break;
|
||||||
|
case "bd_supplier":
|
||||||
|
IT_ITEMS.put("LIFNR", number); // 供应商编号
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// 设置科目
|
||||||
|
DynamicObject account = entry.getDynamicObject("account");
|
||||||
|
if (account != null) {
|
||||||
|
IT_ITEMS.put("HKONT", account.getString("number"));
|
||||||
|
}
|
||||||
|
|
||||||
|
IT_ITEMS.put("UMSKZ", "W");//特殊总账标识
|
||||||
|
|
||||||
|
// 处理金额
|
||||||
|
BigDecimal debitlocal = (BigDecimal) entry.get("debitlocal");
|
||||||
|
BigDecimal creditlocal = (BigDecimal) entry.get("creditlocal");
|
||||||
|
String entrydc = (String) entry.get("entrydc");
|
||||||
|
|
||||||
|
if (debitlocal != null && creditlocal != null && entrydc != null) {
|
||||||
|
BigDecimal amount = BigDecimal.ZERO;
|
||||||
|
switch (entrydc) {
|
||||||
|
case "1": // 借方
|
||||||
|
amount = debitlocal;
|
||||||
|
break;
|
||||||
|
case "-1": // 贷方
|
||||||
|
amount = creditlocal.negate();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logger.warn("无效的分录方向: " + entrydc);
|
||||||
|
}
|
||||||
|
IT_ITEMS.put("DMBTR", amount.toString());
|
||||||
|
} else {
|
||||||
|
logger.warn("凭证分录金额或方向为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
IT_ITEM.add(IT_ITEMS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -48,7 +48,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
/**
|
/**
|
||||||
* 操作标识
|
* 操作标识
|
||||||
*/
|
*/
|
||||||
private static final String KEY_PUSH_VOUCHER= "pushvoucher";
|
private static final String KEY_PUSH_VOUCHER = "pushvoucher";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作执行前,准备加载单据数据之前,触发此事件
|
* 操作执行前,准备加载单据数据之前,触发此事件
|
||||||
|
|
@ -62,6 +62,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_STATUS);
|
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_STATUS);
|
||||||
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_NUMBER);
|
e.getFieldKeys().add(PushVoucherValidator.KEY_BILL_NUMBER);
|
||||||
e.getFieldKeys().add(PushVoucherValidator.KEY_IS_PUSH_SAP);
|
e.getFieldKeys().add(PushVoucherValidator.KEY_IS_PUSH_SAP);
|
||||||
|
e.getFieldKeys().add(PushVoucherValidator.KEY_IS_VOUCHER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -73,7 +74,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||||
super.onAddValidators(e);
|
super.onAddValidators(e);
|
||||||
//添加自定义校验器:1.单据状态=已收款 2.收款明细!=空 3.是否已推送SAP=false 4.SAP凭证号=空
|
//添加自定义校验器:1.单据状态=已收款 2.收款明细!=空 3.是否已推送SAP=false 4.SAP凭证号=空
|
||||||
e.addValidator(new RebReversalFiOperation.ReversalValidator());
|
e.addValidator(new PushVoucherValidator());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -95,11 +96,11 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
/**
|
/**
|
||||||
* 是否已推送SAP
|
* 是否已推送SAP
|
||||||
*/
|
*/
|
||||||
public final static String KEY_IS_PUSH_SAP ="shjh_vouchernum";
|
public final static String KEY_IS_PUSH_SAP = "shjh_ispushsap";
|
||||||
/**
|
/**
|
||||||
* 是否已生成凭证
|
* 是否已生成凭证
|
||||||
*/
|
*/
|
||||||
public final static String KEY_IS_VOUCHER ="isvoucher";
|
public final static String KEY_IS_VOUCHER = "isvoucher";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate() {
|
public void validate() {
|
||||||
|
|
@ -112,12 +113,12 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
rowDataModel.setRowContext(dataEntity.getDataEntity());
|
rowDataModel.setRowContext(dataEntity.getDataEntity());
|
||||||
String billNo = (String) rowDataModel.getValue(KEY_BILL_NUMBER);
|
String billNo = (String) rowDataModel.getValue(KEY_BILL_NUMBER);
|
||||||
String type = (String) rowDataModel.getValue(KEY_BILL_STATUS);
|
String type = (String) rowDataModel.getValue(KEY_BILL_STATUS);
|
||||||
if (!"D".equals(type)){
|
if (!"D".equals(type)) {
|
||||||
this.addErrorMessage(dataEntity, "【" + billNo + "】未付款,无法推送。");
|
this.addErrorMessage(dataEntity, "【" + billNo + "】未付款,无法推送。");
|
||||||
}
|
}
|
||||||
String voucherNum = (String) rowDataModel.getValue(KEY_VOUCHER_NUM);
|
String voucherNum = (String) rowDataModel.getValue(KEY_VOUCHER_NUM);
|
||||||
boolean result = (boolean) rowDataModel.getValue(KEY_IS_PUSH_SAP);
|
boolean result = (boolean) rowDataModel.getValue(KEY_IS_PUSH_SAP);
|
||||||
if (!voucherNum.isEmpty()||result) {
|
if (!voucherNum.isEmpty() || result) {
|
||||||
this.addErrorMessage(dataEntity, "【" + billNo + "】已推送SAP,请勿重复推送。");
|
this.addErrorMessage(dataEntity, "【" + billNo + "】已推送SAP,请勿重复推送。");
|
||||||
}
|
}
|
||||||
boolean isVoucher = (boolean) rowDataModel.getValue(KEY_IS_VOUCHER);
|
boolean isVoucher = (boolean) rowDataModel.getValue(KEY_IS_VOUCHER);
|
||||||
|
|
@ -147,25 +148,31 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
data.put("IT_ITEM", getIT_ITEM(recBill));
|
data.put("IT_ITEM", getIT_ITEM(recBill));
|
||||||
//收款类型=推预付款、员工还款需要传清账数据
|
//收款类型=推预付款、员工还款需要传清账数据
|
||||||
String receivingType = recBill.getString("receivingtype.number");
|
String receivingType = recBill.getString("receivingtype.number");
|
||||||
if ("103".equals(receivingType)||"109".equals(receivingType)) {
|
if ("103".equals(receivingType) || "109".equals(receivingType)) {
|
||||||
//清账数据,参考《IT_CLEAR》,仅清账需要输入
|
//清账数据,参考《IT_CLEAR》,仅清账需要输入
|
||||||
data.put("IT_CLEAR", getIT_CLEAR(recBill));
|
data.put("IT_CLEAR", getIT_CLEAR(recBill));
|
||||||
}
|
}
|
||||||
String type = recBill.getString(RecFieldsInfo.PAYER_TYPE);
|
String type = recBill.getString(RecFieldsInfo.PAYER_TYPE);//付款人类型
|
||||||
long id = recBill.getLong("payer");
|
long id = recBill.getLong("payer");//付款人id
|
||||||
if (null!=type&&id!=0L){
|
if (null != type && id != 0L) {
|
||||||
Boolean disposableCusOrSup = SysUtils.isDisposableCusOrSup(id, type);
|
Boolean disposableCusOrSup = SysUtils.isDisposableCusOrSup(id, type);
|
||||||
if (disposableCusOrSup){
|
if (disposableCusOrSup) {
|
||||||
//一次性供应商或客户信息(仅需要填写)
|
//一次性供应商或客户信息(仅需要填写)
|
||||||
data.put("IS_CUSTOMERCPD", getIS_CUSTOMERCPD(recBill));
|
data.put("IS_CUSTOMERCPD", getIS_CUSTOMERCPD(recBill));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JSONObject response = sap_accounVoucher(data, recBill.getString("billno"));
|
JSONObject response = sap_accounVoucher(data, recBill.getString("billno"));
|
||||||
if (null!=response){
|
if (null != response) {
|
||||||
String code = (String) response.get("code");
|
String code = (String) response.get("code");
|
||||||
if ("0".equals(code)) {
|
if ("0".equals(code)) {
|
||||||
recBill.set("shjh_ispushsap",true);
|
recBill.set("shjh_ispushsap", true);
|
||||||
SaveServiceHelper.update(recBill);
|
SaveServiceHelper.update(recBill);
|
||||||
|
}else {
|
||||||
|
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
|
||||||
|
operateErrorInfo.setMessage((String) response.get("msg"));
|
||||||
|
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
|
||||||
|
operateErrorInfo.setPkValue(dataEntity.getPkValue());
|
||||||
|
this.operationResult.addErrorInfo(operateErrorInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -177,6 +184,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取SAP凭证头信息
|
* 获取SAP凭证头信息
|
||||||
|
*
|
||||||
* @param recBill 收款单动态对象
|
* @param recBill 收款单动态对象
|
||||||
* @return 包含凭证头信息的JSONObject
|
* @return 包含凭证头信息的JSONObject
|
||||||
*/
|
*/
|
||||||
|
|
@ -189,14 +197,15 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
// 公司代码
|
// 公司代码
|
||||||
IS_HEADER.put("BUKRS", recBill.getString("org.number"));
|
IS_HEADER.put("BUKRS", recBill.getString("org.number"));
|
||||||
|
|
||||||
// 凭证类型(留空)
|
String sourceBillType = recBill.getString("sourcebilltype");
|
||||||
IS_HEADER.put("BLART", "DZ");
|
// 凭证类型
|
||||||
|
IS_HEADER.put("BLART", sourceBillType.equals("cdm_receivablebill") ? "DX" : "DZ");
|
||||||
|
|
||||||
// 凭证日期
|
// 凭证日期
|
||||||
Date bizDate = recBill.getDate("bizdate");
|
Date bizDate = recBill.getDate("bizdate");
|
||||||
IS_HEADER.put("BLDAT", bizDate != null ? format.format(bizDate) : "");
|
IS_HEADER.put("BLDAT", bizDate != null ? format.format(bizDate) : "");
|
||||||
|
|
||||||
// 过账日期(修正了原代码中错误的条件判断)
|
// 过账日期
|
||||||
Date payeeDate = recBill.getDate("payeedate");
|
Date payeeDate = recBill.getDate("payeedate");
|
||||||
IS_HEADER.put("BUDAT", payeeDate != null ? format.format(payeeDate) : "");
|
IS_HEADER.put("BUDAT", payeeDate != null ? format.format(payeeDate) : "");
|
||||||
|
|
||||||
|
|
@ -214,9 +223,19 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
// 固定值
|
// 固定值
|
||||||
IS_HEADER.put("USNAM", "资金系统");
|
IS_HEADER.put("USNAM", "资金系统");
|
||||||
|
|
||||||
|
String payerType = recBill.getString("payertype");
|
||||||
|
if (payerType != null) {
|
||||||
|
String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
|
||||||
|
switch (payerType) {
|
||||||
|
case "bd_customer":
|
||||||
|
IS_HEADER.put("KUNNR", cusOrSupNumber);
|
||||||
|
break;
|
||||||
|
case "bd_supplier":
|
||||||
|
IS_HEADER.put("LIFNR", cusOrSupNumber);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
// 以下字段初始化为空
|
// 以下字段初始化为空
|
||||||
IS_HEADER.put("KUNNR", ""); // 客户编号
|
|
||||||
IS_HEADER.put("LIFNR", ""); // 供应商编号
|
|
||||||
IS_HEADER.put("ZUONR", ""); // 分配编号
|
IS_HEADER.put("ZUONR", ""); // 分配编号
|
||||||
|
|
||||||
return IS_HEADER;
|
return IS_HEADER;
|
||||||
|
|
@ -224,12 +243,14 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取SAP凭证行项目信息
|
* 获取SAP凭证行项目信息
|
||||||
|
*
|
||||||
* @param recBill 收款单动态对象
|
* @param recBill 收款单动态对象
|
||||||
* @return 包含行项目信息的JSONArray
|
* @return 包含行项目信息的JSONArray
|
||||||
*/
|
*/
|
||||||
private JSONArray getIT_ITEM(DynamicObject recBill) {
|
private JSONArray getIT_ITEM(DynamicObject recBill) {
|
||||||
JSONArray IT_ITEM = new JSONArray();
|
JSONArray IT_ITEM = new JSONArray();
|
||||||
|
//源单类型
|
||||||
|
String sourceBillType = recBill.getString("sourcebilltype");
|
||||||
// 1. 获取客户/供应商编号
|
// 1. 获取客户/供应商编号
|
||||||
String payerType = recBill.getString("payertype");
|
String payerType = recBill.getString("payertype");
|
||||||
String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
|
String cusOrSupNumber = getCustomerOrSupplierNumber(payerType, recBill);
|
||||||
|
|
@ -242,7 +263,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
DynamicObject entry = entrys.get(0);
|
DynamicObject entry = entrys.get(0);
|
||||||
DynamicObject shjhYym = entry.getDynamicObject("shjh_yym");
|
DynamicObject shjhYym = entry.getDynamicObject("shjh_yym");
|
||||||
RSTGR = shjhYym != null ? shjhYym.getString("number") : "";
|
RSTGR = shjhYym != null ? shjhYym.getString("number") : "";
|
||||||
SGTXT = entry.getString("shjh_sapline");
|
//SGTXT = entry.getString("shjh_sapline");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 获取成本中心
|
// 3. 获取成本中心
|
||||||
|
|
@ -313,7 +334,22 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
IT_ITEMS.put("RSTGR", RSTGR);
|
IT_ITEMS.put("RSTGR", RSTGR);
|
||||||
IT_ITEMS.put("KOSTL", KOSTL);
|
IT_ITEMS.put("KOSTL", KOSTL);
|
||||||
IT_ITEMS.put("PRCTR", PRCTR);
|
IT_ITEMS.put("PRCTR", PRCTR);
|
||||||
|
//设置汇票字段
|
||||||
|
if (sourceBillType.equals("cdm_receivablebill")) {
|
||||||
|
IT_ITEMS.put("UMSKZ", "W");//特殊总账标识
|
||||||
|
DynamicObjectCollection draftInfo = recBill.getDynamicObjectCollection("cas_draftinfo");
|
||||||
|
if (null != draftInfo && draftInfo.size() != 0) {
|
||||||
|
DynamicObject draftBillInfo = draftInfo.get(0).getDynamicObject("draftbillinfo");
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
Date draftBillExpireDate = draftBillInfo.getDate("draftbillexpiredate");
|
||||||
|
IT_ITEMS.put("ZFBDT", draftBillExpireDate !=null ? format.format(draftBillExpireDate) : "");//汇票到期日
|
||||||
|
Date issueDate = draftBillInfo.getDate("issuedate");
|
||||||
|
IT_ITEMS.put("WDATE",issueDate !=null ? format.format(issueDate) : "");//汇票签发日期
|
||||||
|
IT_ITEMS.put("WNAME",draftBillInfo.getString("drawername"));//出票人
|
||||||
|
IT_ITEMS.put("WBZOG",draftBillInfo.getString("receivername"));//受票人
|
||||||
|
IT_ITEMS.put("WBANK",draftBillInfo.getString("draftbillno"));//票据号
|
||||||
|
}
|
||||||
|
}
|
||||||
IT_ITEM.add(IT_ITEMS);
|
IT_ITEM.add(IT_ITEMS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -324,6 +360,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成收款清账凭证数据
|
* 生成收款清账凭证数据
|
||||||
|
*
|
||||||
* @param recBill 收款单动态对象
|
* @param recBill 收款单动态对象
|
||||||
* @return 清账凭证数据JSON数组
|
* @return 清账凭证数据JSON数组
|
||||||
*/
|
*/
|
||||||
|
|
@ -499,6 +536,7 @@ public class RecPushVoucherOperation extends AbstractOperationServicePlugIn impl
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据付款方类型获取客户或供应商编号
|
* 根据付款方类型获取客户或供应商编号
|
||||||
|
*
|
||||||
* @param payerType 付款方类型 ("bd_customer" 或 "bd_supplier")
|
* @param payerType 付款方类型 ("bd_customer" 或 "bd_supplier")
|
||||||
* @param recBill 收款单动态对象
|
* @param recBill 收款单动态对象
|
||||||
* @return 客户/供应商编号,如果找不到则返回空字符串
|
* @return 客户/供应商编号,如果找不到则返回空字符串
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue