第三方系统与金蝶EAS系统凭证集成时,调用金蝶EAS系统标准凭证接口WSGLWebServiceFacade,下载对应的wsdl文件,生成客户端代码之后,可参考以下接口调用方式。
与EAS系统进行凭证集成时,最大的工作量部分在于基础数据的同步,基础数据一致的情况下,考虑凭证集成。
import com.sdic.services.util.LoginUtil;
import com.sdic.services.gl.client.WSWSVoucher;
import com.sdic.services.gl.WSGLWebServiceFacadeSrvProxyServiceLocator;
/**
* 金蝶EAS财务系统与第三方系统集成参考
* @author 郭旭
*
*/
public class Test {
public static void main(String[] args) throws Exception {
LoginUtil.login(); //登录EAS系统
String[] results = null; //导入凭证操作的反馈信息
WSWSVoucher[] vouchers = new WSWSVoucher[156];
int seq = 1; //分录序号
for(int i = 0; i < 156; i += 3){
vouchers[i] = getWSVoucher1("1011001", 1, seq); //借方分录
vouchers[i + 1] = getWSVoucher2("60210010101", 1, seq + 1); //贷方分录
vouchers[i + 2] = getWSVoucher3("1011001", 1, seq); //现金流量(依附借方分录)
seq += 2;
}
WSGLWebServiceFacadeSrvProxyServiceLocator locator = null;
locator = new WSGLWebServiceFacadeSrvProxyServiceLocator();
// 需引入现金流量时,最后一个参数为1,否则为0
// 需直接生成提交状态的凭证时,第二个参数为1,否则为0
results = locator.getWSGLWebServiceFacade().importVoucher(vouchers, 1, 0, 1);
System.out.println("返回值数组长度:" + results.length);
for(String result : results){
System.out.println(result);
}
}
/**
* 封装凭证分录(借方,正向凭证)
* @param accmountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
*
*/
public static WSWSVoucher getWSVoucher1(String accmountNumber, double amount, int entrySeq) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("001"); //公司编码
voucher.setBookedDate("2016-09-01"); //记账日期
voucher.setBizDate("2016-09-01"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(9); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription("测试数据,来自凭证接口");
voucher.setAccountNumber(accmountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("张三"); //制单人
voucher.setVoucherAbstract("测试数据");
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(amount); //借方金额
voucher.setCreditAmount(0); //贷方金额
voucher.setAsstSeq(1); //辅助账行
voucher.setAsstActType1("客商"); //辅助核算
voucher.setAsstActNumber1("03.03001"); //核算项目编码
voucher.setAsstActName1("某某银行"); //核算项目名称
voucher.setItemFlag(0); //现金流量标记
return voucher;
}
/**
* 封装凭证分录(贷方,正向凭证)
* @param accmountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
*
*/
public static WSWSVoucher getWSVoucher2(String accmountNumber, double amount, int entrySeq) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("001"); //公司编码
voucher.setBookedDate("2016-09-01"); //记账日期
voucher.setBizDate("2016-09-01"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(9); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription("测试数据,来自凭证接口");
voucher.setAccountNumber(accmountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(-1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("张三"); //制单人
voucher.setVoucherAbstract("测试数据");
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(0); //借方金额
voucher.setCreditAmount(amount); //贷方金额
voucher.setAsstSeq(1); //辅助账行
voucher.setAsstActType1("某某项目"); //辅助核算
voucher.setAsstActNumber1("001"); //核算项目编码
voucher.setAsstActName1("某某信托项目"); //核算项目名称
voucher.setAsstActType2("部门"); //辅助核算
voucher.setAsstActNumber2("001"); //核算项目编码
voucher.setAsstActName2("公司高管"); //核算项目名称
voucher.setItemFlag(0); //现金流量标记
return voucher;
}
/**
* 封装凭证现金流量(借方,正向凭证)
* 该方法除现金流量标记及相关字段外,其余与借方分录(现金类科目)完全一致
* @param accmountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
*
*/
public static WSWSVoucher getWSVoucher3(String accmountNumber, double amount, int entrySeq) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("001"); //公司编码
voucher.setBookedDate("2016-09-01"); //记账日期
voucher.setBizDate("2016-09-01"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(9); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription("测试数据,来自凭证接口");
voucher.setAccountNumber(accmountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("张三"); //制单人
voucher.setVoucherAbstract("测试数据");
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(amount); //借方金额
voucher.setCreditAmount(0); //贷方金额
voucher.setAsstSeq(1); //辅助账行
voucher.setAsstActType1("客商"); //辅助核算
voucher.setAsstActNumber1("03.03001"); //核算项目编码
voucher.setAsstActName1("某某银行"); //核算项目名称
/*
* 以上部分与现金类科目分录的封装完全一致
* 以下为现金流量相关字段,现金流量标记固定值为1
* 主表项目需填写正确的主表项目编码
*/
voucher.setItemFlag(1); //现金流量标记
voucher.setOppAccountSeq(2); //对方科目分录号
voucher.setPrimaryItem("CF1030-999"); //主表项目:收到的其他与经营活动有关的现金--外部
voucher.setCashflowAmountOriginal(amount); //现金流量原币金额
voucher.setCashflowAmountLocal(amount); //本位币金额
voucher.setCashflowAmountRpt(amount); //报告币金额
voucher.setType("2"); //现金流量性质,外部:2,内部:3;
return voucher;
}
}