金蝶凭证接口提示:3100||null||0||0||凭证重复,系统已经引入过,EAS凭证号:0001
问题原因:凭证单据头参考信息(description)字段不能与历史重复;科目、金额等信息一致的情况下,会根据参考信息去判断凭证是否重复,如果凭证生成之后,需要删除,然后重新生成,尽量保持参考信息与历史不一致。
voucher.setDescription(desc); //参考信息字段,例如使用流水号等,业务上有含义,并且不与历史重复
以下代码仅供参考:
/**
* 凭证接口调用
*/
private static void importVoucher() throws Exception {
String[] results = null; //导入凭证操作的反馈信息
WSWSVoucher[] vouchers = new WSWSVoucher[3];
String desc = String.valueOf(System.currentTimeMillis());
vouchers[0] = getDebit1("1122.01.01", 12, 1, desc, "凭证摘要"); //借方分录
vouchers[1] = getDebit2("1122.01.01", 13, 1, desc, "凭证摘要"); //借方分录
vouchers[2] = getCredit("6001.01.01", 25, 3, desc, "凭证摘要"); //贷方分录
WSGLWebServiceFacadeSrvProxyServiceLocator locator = null;
locator = new WSGLWebServiceFacadeSrvProxyServiceLocator();
// 需引入现金流量时,最后一个参数为1,否则为0
// 需直接生成提交状态的凭证时,第二个参数为1,否则为0
boolean flag = checkout(vouchers);
if(flag){
results = locator.getWSGLWebServiceFacade().importVoucher(vouchers, 0, 0, 0);
System.out.println("返回值数组长度:" + results.length);
for(String result : results){
System.out.println(result);
}
} else {
System.out.println("凭证校验不通过!");
}
}
/**
* 封装凭证分录(借方)
* @param accountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
* @param desc 参考信息
* @param abst 凭证摘要
*
*/
public static WSWSVoucher getDebit1(String accountNumber, double amount, int entrySeq, String desc, String abst) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("M006"); //公司编码
voucher.setBookedDate("2016-01-16"); //记账日期
voucher.setBizDate("2016-01-16"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(1); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription(desc);
voucher.setAccountNumber(accountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("朱笑菲"); //制单人
voucher.setVoucherAbstract(abst);
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(amount); //借方金额
voucher.setCreditAmount(0); //贷方金额
voucher.setItemFlag(0); //现金流量标记
voucher.setAsstSeq(1); //辅助账行
voucher.setAsstActType1("客户"); //辅助核算
voucher.setAsstActNumber1("0201010"); //核算项目编码
voucher.setAsstActName1("开联信息技术有限公司(连心卡)"); //核算项目名称
return voucher;
}
/**
* 封装凭证分录(借方)
* @param accountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
* @param desc 参考信息
* @param abst 凭证摘要
*
*/
public static WSWSVoucher getDebit2(String accountNumber, double amount, int entrySeq, String desc, String abst) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("M006"); //公司编码
voucher.setBookedDate("2016-01-16"); //记账日期
voucher.setBizDate("2016-01-16"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(1); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription(desc);
voucher.setAccountNumber(accountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("朱笑菲"); //制单人
voucher.setVoucherAbstract(abst);
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(amount); //借方金额
voucher.setCreditAmount(0); //贷方金额
voucher.setItemFlag(0); //现金流量标记
voucher.setAsstSeq(1); //辅助账行
voucher.setAsstActType1("客户"); //辅助核算
voucher.setAsstActNumber1("G001G001000009"); //核算项目编码
voucher.setAsstActName1("刘振兴"); //核算项目名称
return voucher;
}
/**
* 封装凭证分录(贷方)
* @param accountNumber 科目编码
* @param amount 金额
* @param entrySeq 分录行号
* @param desc 参考信息
* @param abst 凭证摘要
*
*/
public static WSWSVoucher getCredit(String accountNumber, double amount, int entrySeq, String desc, String abst) throws Exception {
WSWSVoucher voucher = new WSWSVoucher();
voucher.setVoucherNumber(""); //凭证号
voucher.setCompanyNumber("M006"); //公司编码
voucher.setBookedDate("2016-01-16"); //记账日期
voucher.setBizDate("2016-01-16"); //业务日期
voucher.setPeriodYear(2016); //年
voucher.setPeriodNumber(1); //期间(月)
voucher.setVoucherType("记"); //凭证类型
voucher.setDescription(desc);
voucher.setAccountNumber(accountNumber); //科目编码
voucher.setEntrySeq(entrySeq); //分录行号
voucher.setEntryDC(-1); //借贷方向:1,借;0(-1),贷
voucher.setCurrencyNumber("BB01"); //币别编码
voucher.setCreator("朱笑菲"); //制单人
voucher.setVoucherAbstract(abst);
voucher.setOriginalAmount(amount); //原币金额
voucher.setDebitAmount(0); //借方金额
voucher.setCreditAmount(amount); //贷方金额
voucher.setItemFlag(0); //现金流量标记
return voucher;
}